温馨提示×

nginx日志中502怎么排查原因

小樊
36
2026-10-11 12:18:03
栏目: 编程语言

Nginx 出现 502 Bad Gateway 通常表示:Nginx 作为反向代理,无法从上游服务(如 PHP-FPM、Tomcat、Node、Python 等)拿到合法响应。排查可以从“Nginx → 上游服务”这条链路入手。

下面按最常见 → 较少见的顺序给你一套排查思路。


一、先看 Nginx 错误日志(最关键)

tail -f /var/log/nginx/error.log

常见 502 相关错误示例:

1️⃣ 连接被拒绝

connect() failed (111: Connection refused) while connecting to upstream

✅ 说明:

  • 上游服务没启动
  • 端口写错
  • 监听地址不对(如只监听 127.0.0.1,但 Nginx 用 0.0.0.0)

排查:

netstat -lntp | grep 端口
# 或
ss -lntp | grep 端口

2️⃣ 连接超时

upstream timed out (110: Connection timed out)

✅ 说明:

  • 后端处理太慢
  • 网络问题
  • 数据库卡死

排查:

  • 手动访问后端服务(curl)
  • 看后端 CPU / 内存 / 慢查询

3️⃣ 上游主动断开

recv() failed (104: Connection reset by peer)

✅ 说明:

  • 后端崩了
  • 请求太大
  • 后端有 bug

4️⃣ 文件描述符 / 代理配置问题

too many open files

✅ 说明:

  • 系统或 Nginx 连接数打满

二、确认上游服务是否真的正常

直接访问后端(绕过 Nginx)

curl http://127.0.0.1:端口/接口
  • ✅ 能通 → 问题在 Nginx 配置
  • ❌ 不通 → 问题在后端服务

三、检查 Nginx 反向代理配置

常见错误配置示例:

location / {
    proxy_pass http://127.0.0.1:8080;
}

✅ 检查点:

  1. 端口是否和后端一致
  2. 是否少了 / 导致路径问题
  3. 是否用了 HTTPS 但后端是 HTTP

四、PHP / FPM 场景(非常常见)

如果是 PHP:

错误示例

connect() to unix:/run/php-fpm.sock failed (2: No such file or directory)

排查:

ps aux | grep php-fpm
ls -l /run/php-fpm.sock

✅ 解决:

  • 启动 php-fpm
  • 修正 fastcgi_pass

五、超时类 502(后端慢)

可在 Nginx 增加超时时间(临时验证):

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

⚠️ 不推荐长期靠这个解决,应优化后端。


六、系统资源问题

free -h
top
df -h
ulimit -n

常见问题:

  • 内存爆了 → OOM kill
  • 磁盘满 → 写不了日志
  • 文件描述符不够

七、快速排查 checklist ✅

  • [ ] Nginx error.log 有什么错?
  • [ ] 后端服务在跑吗?
  • [ ] 端口 / socket 对吗?
  • [ ] 能 curl 通后端吗?
  • [ ] 后端是不是太慢 / 崩溃?
  • [ ] 系统资源正常吗?

如果你愿意,可以把:

  • Nginx 配置
  • error.log 报错原文
  • 后端类型(PHP / Java / Node 等)

发出来,我可以直接帮你定位具体原因。

0 踩