先理解 502 的语义
502 Bad Gateway = Nginx 收到了上游的响应,但响应无效(连接被拒、连接中断、协议错误)。所以排查焦点是「Nginx 和它后面的那个服务」之间的链路,而不是 Nginx 的静态服务。
步骤一:后端进程还活着吗
最常见原因是后端挂了或没监听对应端口。先看进程与端口监听。
ps aux | grep <your-app>
ss -ltnp | grep <port> # 确认后端确实在监听 Nginx 配置的端口步骤二:upstream 地址/端口对不对
核对 `proxy_pass` 指向的 host:port 是否真实可达,容器环境尤其容易填错服务名或端口。
location /api/ {
proxy_pass http://127.0.0.1:8080; # 确认 8080 确为后端端口
}步骤三:是不是超时
后端处理慢(大查询、冷启动)时,Nginx 等不及就断连返回 502。适当放宽代理超时。
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;步骤四:资源与连接上限
后端连接池耗尽、文件描述符(fd)上限、或 Nginx worker 连接数到顶,也会表现为 502。检查系统/服务资源水位。
步骤五:看 error.log 收尾
Nginx 的 `error.log` 会写明具体原因,例如 `connect() failed (111: Connection refused)` 或 `upstream prematurely closed`。按日志关键词反查上面对应步骤,基本能一击命中。
tail -f /var/log/nginx/error.log