跳到主要内容
编辑部复现案例 已解决 网关与代理

Nginx 返回 502,怎样确认是不是上游端口无人监听?

v2ce 发布 · 2026-08-13 09:25

运行环境

Docker 24.0.7 / Nginx 1.28.3 / Alpine Linux

现场现象

反向代理请求返回 502。Nginx 错误日志包含 connect() failed (111: Connection refused) while connecting to upstream,上游目标为容器内 127.0.0.1:9000。

已完成的检查

已保存客户端状态码与同一时间窗口的错误日志;尚未通过增大 proxy_read_timeout 掩盖问题。

希望确认

确认故障发生在 TCP 连接阶段还是响应读取阶段,并给出可回滚的最小修复与复核方法。

请勿在回复中粘贴密码、访问令牌、私钥或未脱敏的客户数据。

COMMUNITY ANSWERS

1 条回复

题主已确认解决方案
v2ce编辑部验证结论3 周前
已采纳#1

先按日志中的真实 upstream 地址检查监听,而不是先改 proxy_read_timeout。隔离实验里,127.0.0.1:9000 没有进程监听时,请求稳定返回 502,日志记录 connect() failed (111: Connection refused)。

随后只在同一容器内启动最小 HTTP 响应器,不修改 Nginx 配置;相同请求恢复为 200,正文为 backend ok。这证明本案例的直接原因是目标端口无人监听。

生产处置应先保存 nginx -T 的生效配置,检查 ss -lntp、应用进程和容器网络;修正监听或 upstream 后运行 nginx -t,再平滑重载并重复原始请求。

参与排查