rmdir.cn

Nginx 502 排查

定位上游连接和响应异常

语法

curl -v --connect-timeout 5 --max-time 10 http://127.0.0.1:3000/health

说明

适用于 Nginx 返回 502 Bad Gateway。先对照错误日志中的请求时间和 upstream 地址,再从 Nginx 所在网络环境测试上游。常见原因包括端口未监听、HTTP/HTTPS 协议配错、Unix socket 权限不符、无效响应头或上游提前关闭连接;超时也需区分 504 等状态,不能统一靠增大超时修复。

参数

  • --connect-timeout

    连接阶段超时秒数

  • --max-time

    整个请求最长时间秒数

示例

从代理所在环境测试上游

使用真实上游协议、地址和只读健康检查路径。

curl -v --connect-timeout 5 --max-time 10 http://127.0.0.1:3000/health

注意事项:Docker 中的 127.0.0.1 指当前容器,不是宿主机或其他容器。上游依赖虚拟主机时还要传入对应 Host。

定位上游错误类型

查看最近错误日志,区分连接拒绝、无效响应和提前断开。

sudo tail -n 200 /var/log/nginx/error.log | grep -E 'upstream|connect\(\)|prematurely|invalid header'

注意事项:路径以配置为准。结合监听端口、服务日志和网络策略定位;若修改代理配置,必须检查通过后再重载,不要直接授予 777 权限。

参考资料