502 Bad Gateway 表示网关(Nginx)没有从上游服务拿到有效响应。排查时建议按“网络连通 → 进程状态 → 应用日志 → 代理配置”顺序推进,避免来回跳步骤。
1. 先确认上游服务是否可达
- 在 Nginx 机器上执行
curl -I http://127.0.0.1:3000,确认端口正常返回。 - 检查应用进程是否存在:
ps -ef | grep your-app。 - 若是容器部署,确认容器健康状态和映射端口一致。
2. 查看 Nginx 错误日志
优先看 error.log,常见关键词如下:
connect() failed (111: Connection refused):上游端口未监听或服务未启动。upstream timed out:上游处理过慢,需优化接口或放宽超时。no live upstreams:上游集群全部不可用或健康检查失败。
3. 校验反向代理配置关键项
location /api/ {
proxy_pass http://127.0.0.1:3000;
proxy_connect_timeout 5s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
重点检查 proxy_pass 路径是否多斜杠、端口是否正确、超时值是否满足接口耗时。
4. 建议的处理顺序
- 先恢复可用性:重启上游或回滚异常版本。
- 再定位根因:看最近发布、依赖变更、流量峰值。
- 最后补预防:健康检查、超时策略、告警阈值。