位置:首页 > Go > Nginx 日志里的 5xx 错误怎么排查:从日志定位到 500/502/503/504 处理思路

Nginx 日志里的 5xx 错误怎么排查:从日志定位到 500/502/503/504 处理思路

时间:2026-08-25  |  作者:宇宙开黑者  |  阅读:0

目录

  1. 先看错误日志,确认故障落点
  2. 4 类常见 5xx 错误分别怎么查
  3. 想少遇到 5xx,日常要补上哪些预防措施

前言

遇到 Nginx 返回 5xx 时,最怕的不是报错本身,而是分不清问题到底出在 Nginx、后端服务,还是服务器资源与网络链路。本文把常见的 500、502、503、504 排查方法按“先定位、再分流、最后预防”的顺序整理出来,便于你根据日志特征快速缩小范围,也能判断该优先改配置、查服务,还是处理性能瓶颈。

遇到 Nginx 返回 5xx 时,最怕的不是报错本身,而是分不清问题到底出在 Nginx、后端服务,还是服务器资源与网络链路。本文把常见的 500、502、503、504 排查方法按“先定位、再分流、最后预防”的顺序整理出来,便于你根据日志特征快速缩小范围,也能判断该优先改配置、查服务,还是处理性能瓶颈。

先看错误日志,确认故障落点

排查 5xx 的第一步不是改配置,而是先读取 Nginx 错误日志。它通常位于 /var/log/nginx/error.log;如果当前环境做过自定义,也可以先用 nginx -V 确认编译参数和相关路径。

展示通过 Nginx 错误日志快速判断问题层级的流程信息图
5xx 排查先从错误日志下手先从错误日志识别报错类型、配置落点和上游异常,决定下一步排查方向。

实时观察日志,最直接的办法是:

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

重点关注三类信息:

  • 错误类型,例如 Permission deniedConnection refusedupstream timed out
  • 报错关联的配置文件和行号,例如 conf.d/default.conf:10
  • 后端服务抛出的具体异常,例如 PHP-FPM 日志中的 child exited on signal 11

这一步的作用,是先把故障归到具体层级。比如看到权限错误,就先查文件访问权限;看到连接被拒绝,就转向后端服务状态和端口;看到超时,就优先怀疑后端处理慢、超时设置不足或网络延迟偏高。只有先把线索定准,后面的排查才不会变成盲目试错。

4 类常见 5xx 错误分别怎么查

500 Internal Server Error:优先查配置、脚本和权限

500 的成因通常比较杂,但高频问题往往集中在四类:Nginx 配置语法写错、后端脚本本身报错、服务器资源不足,以及 Nginx 进程没有足够权限访问站点文件或日志目录。

展示 500 与 502 错误的核心成因和排查重点对比信息图
与 502 的排查重点对照500 更偏配置、脚本、资源与权限;502 更偏上游服务状态、端口配置和通信链路。

建议按下面的顺序处理:

  • 先检查 Nginx 配置语法:sudo nginx -t。如果有报错,按提示修正,比如补上 break,或给变量补上 $
  • 再检查后端脚本日志。PHP-FPM 常见日志位置是 /var/log/php-fpm/error.logwww-error.log,可据此定位语法错误、运行时异常,或通过调整 memory_limit 处理内存相关问题。
  • 核实服务器资源:df -h 查看磁盘空间,确保 / 分区剩余空间大于 10%;free -m 查看内存占用,尽量不要长期高于 80%。
  • 最后检查权限。确认 Nginx 进程用户,如 www-data,对站点根目录有读取权限,例如 chmod 755 /var/www/html;对日志目录有写入权限,例如 chmod 775 /var/log/nginx

如果日志中既没有明显的连接失败,也没有超时信息,500 往往更适合从配置语法、应用代码和本机资源这三个方向并行检查。

502 Bad Gateway:重点确认上游服务是否正常

502 一般表示 Nginx 作为网关时,拿不到可用的上游响应。最常见的情况是后端服务没有启动、端口或地址配置错误、Nginx 到后端的通信被防火墙拦截,或者后端进程已经崩溃。

排查时可以先做四件事:

  • 确认后端服务状态:systemctl status php-fpm,如果服务未启动,则执行 systemctl start php-fpm。如果后端是 Tomcat,也按同样思路检查 tomcat 服务。
  • 核对 Nginx 的 proxy_pass 配置,确保 IP 与端口准确无误,例如 proxy_pass http://127.0.0.1:9000;,避免把实际监听端口写成 8080 之类的错误值。
  • 检查防火墙规则。Ubuntu 可查看 ufw status,CentOS 可查看 firewalld status,确认没有拦截 Nginx 与后端之间的 9000、8080 等通信端口。
  • 查看后端服务日志。如果 PHP-FPM 日志中出现 child exited on signal 11,通常意味着进程异常退出,需要继续回到代码和内存设置,例如检查数组越界、空指针等问题,必要时调整 memory_limit = 256M

判断 502 的关键点在于:Nginx 本身可能工作正常,真正异常的是它依赖的上游服务。只要把“服务是否在线、地址是否正确、链路是否可达”这三项核实清楚,问题范围通常会迅速缩小。

503 与 504:一个偏过载,一个偏超时

503 Service Unavailable 和 504 Gateway Timeout 经常一起出现,但两者的故障指向并不相同。503 更像是“当前服务扛不住”或“服务被主动关闭”,而 504 通常意味着“后端处理太慢,Nginx 等超时了”。

先看 503。常见原因包括服务器过载、数据库或 API 等后端服务不可用,以及误开启维护模式。可按以下顺序处理:

  • tophtop 查看负载。如果 %CPU 持续超过 80%、%MEM 超过 70%,就要考虑优化程序、限制流量或直接扩容。
  • 直接测试后端接口,例如 curl http://127.0.0.1:8080/api。如果这里已经返回错误,说明问题不在 Nginx,而在后端服务本身;必要时可重启数据库,如 systemctl restart mysql
  • 检查 Nginx 配置中是否存在维护模式,例如 location / { return 503; },如果是误配,应注释或删除。
  • 适当调整连接数。在 /etc/nginx/nginx.confevents 块里增大 worker_connections,例如调整为 1024,并重启 Nginx 使其生效。

再看 504。它通常由后端处理时间过长、Nginx 超时设置偏短或网络延迟较高引起。对应处理方法如下:

  • 先优化后端性能,例如为数据库建立索引、避免全表扫描,或把大文件上传改成切片上传。
  • 根据实际处理耗时调整 Nginx 超时参数,可在对应 location 中设置:
location /api {
    proxy_pass http://backend;
    proxy_connect_timeout 30s;
    proxy_read_timeout 180s;  # 关键参数,根据后端处理时间调整
    proxy_send_timeout 30s;
}
  • 检查网络稳定性。使用 ping 测试 Nginx 与后端之间的时延;如果超过 100ms,就需要继续排查链路质量、路由配置或跨地域部署带来的影响。
  • 如果单台后端长期压力过大,可以引入负载均衡,通过 upstream 分发请求:
upstream backend {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

location /api {
    proxy_pass http://backend;
}

简单说,503 更偏“服务不可用”,要先确认是不是资源打满、依赖服务挂了,或者配置里主动返回了 503;504 则要重点判断慢点出现在应用、数据库、超时参数,还是网络链路。

想少遇到 5xx,日常要补上哪些预防措施

5xx 问题很难完全避免,但可以通过监控、备份和压力测试把大部分风险提前暴露出来。

  • 监控与告警:用 Prometheus + Grafana 持续观察 CPU、内存、磁盘、请求量和错误率。比如把错误率超过 1% 设为告警阈值,尽量在用户大面积感知前发现问题。
  • 定期备份:将 /etc/nginx/ 下的配置文件和 /var/www/html/ 下的网站数据纳入定期备份,避免配置误改或数据损坏后难以及时恢复。
  • 压力测试:用 JMeter 或 Locust 模拟高并发访问,提前找出瓶颈。例如在并发量超过 1000 时出现 502,就说明当前后端实例数、连接数或资源配置已经不足。

从运维实践看,5xx 真正难处理的地方并不是单个报错码,而是定位路径混乱。只要固定成“先日志、再分类型、再查资源和后端、最后复盘预防”的流程,大多数故障都能在较短时间内找到原因。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多