e3fe161ae5
NEXUS_PUBLISH_PORT 未写入 .env.prod 时避免空端口误打 OpenResty 导致部署脚本误报失败。
40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# Changelog — 外网探测脚本 curl / WebSocket 修复
|
||
|
||
**日期**:2026-06-07
|
||
|
||
## 摘要
|
||
|
||
修复 `security_probe_external.sh` 中 `probe()` 对 `shift 3` 的误用,消除 `code=000000ok200` 类误报 `[FAIL]`;WebSocket 段自动解析项目 `venv` 或引导临时 venv 安装 `websockets`。
|
||
|
||
## 动机
|
||
|
||
`probe GET /path` 仅 2 个参数时,bash `shift 3` 不移位,`GET` 与 `/health` 被当作 curl 额外 URL,stdout 混入 `000` 错误与响应体,判定逻辑全部失真。
|
||
|
||
## 涉及文件
|
||
|
||
- `scripts/security_probe_external.sh`
|
||
|
||
## 变更(续 2026-06-07 试跑)
|
||
|
||
- `deploy-production.sh`:`NEXUS_PUBLISH_PORT` 缺失时 `PORT` 默认 **8600**(修复空端口打到 OpenResty 404)
|
||
|
||
## 变更
|
||
|
||
- GET:`shift 2`;非 GET:`shift 2` + `shift 1`(消费 body),剩余 `$@` 为额外 curl 参数
|
||
- HTTP 状态码写入独立临时文件,避免与 body 混淆
|
||
- 统一 `-X "$method"`
|
||
- `script-callback` 探测 body 满足 Pydantic 最小长度,确保测到 401 而非 422
|
||
- 新增 `resolve_ws_python()`:`NEXUS_PROBE_PYTHON` → `venv/` → 系统 python → `/tmp/nexus-probe-venv` + `websockets==14.1`
|
||
|
||
## 迁移 / 重启
|
||
|
||
无。
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
NEXUS_PROBE_BASE=https://api.synaglobal.vip bash scripts/security_probe_external.sh
|
||
# GET /health → [PASS];install POST → [PASS] 404;无 code=000000... 误报
|
||
# WebSocket → [PASS] HTTP 403(不再 [SKIP])
|
||
```
|