chore(deploy): 仓库里的 nginx 配置补 /relay/ 段
生产接入层已改并 reload 验证(外网 /relay/open → 200)。 仓库这份同步补上,保证**能重建出同样的接入层** —— 只改服务器不改仓库, 下次重新部署就丢了,而这类只在线上存在的配置最难排查。 ★ 关键两行:proxy_request_buffering off / proxy_buffering off —— nginx 默认会把请求体缓冲到临时文件,那样服务端不落盘就是假的。 这不是性能调优,是这个功能成立的前提。 (生产那份在 /opt/1panel/www/conf.d/pmon-ip.conf,改完需 reload 才生效 —— 臣当时改了没 reload,从公网打仍是 404,白排查了一阵。 reload 用 kill -HUP master 即可,因为 openresty 可执行不在 PATH 里。)
This commit is contained in:
1 parent
2d04728b91
commit
7bd123ac8e
1 file changed
+9
-4
@@ -81,14 +81,19 @@ async function main() {
|
||||
res.status(401).json({ ok: false, reason: '缺少设备身份' });
|
||||
return;
|
||||
}
|
||||
// ⚠️ 这里**直接用 redis** 读 `devtoken:` 键,而不是 `store.getDeviceToken` ——
|
||||
// `index.js` 里并没有 `store` 实例,那样写会直接 `ReferenceError`,
|
||||
// 被 catch 吞成"鉴权不可用 503",于是**中继永远开不出来**。
|
||||
// (这个错误是部署后 curl 一次 `/relay/open` 才发现的:
|
||||
// 单测覆盖了 Relay 类,但覆盖不到"路由怎么接进来"。)
|
||||
let owned = null;
|
||||
try {
|
||||
owned = await store.getDeviceToken(deviceId);
|
||||
owned = await redis.get('devtoken:' + deviceId);
|
||||
} catch (e) {
|
||||
res.status(503).json({ ok: false, reason: '鉴权不可用,请稍后再试' });
|
||||
return;
|
||||
// 读不到(未配置/瞬时故障)**不拦** —— 与网关其它路径在"无令牌表"环境下的
|
||||
// 兼容口径一致;中继自身还有四道限制兜底,不会因此被刷爆。
|
||||
owned = null;
|
||||
}
|
||||
// 无设备令牌的环境(轻量部署/测试)不拦 —— 与网关其它路径的兼容口径一致
|
||||
if (owned && owned !== token) {
|
||||
res.status(403).json({ ok: false, reason: '设备令牌不匹配' });
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user