Nginx 502/504错误根因可三步定位:一查错误日志中“Connection refused”“upstream timed out”等关键词判故障类型;二抓upstream地址验证后端存活与连通性;三结合上游服务日志、系统资源(CPU/内存/文件描述符)及超时配置交叉验证。

遇到生产环境突发故障,Nginx 错误日志(error.log)不是“翻着看”的材料,而是带时间戳、上下文和因果链的现场笔录。关键不在日志多不多,而在你能否三步内提取出真正指向根因的信号。
盯住每条 502/504/500 记录里的三个硬字段
一条典型的错误日志如:
2026/09/05 16:22:41 [error] 12345#0: *6789 connect() failed (111: Connection refused) while connecting to upstream, client: 10.20.30.40, server: api.example.com, request: "POST /v1/order HTTP/1.1", upstream: "http://127.0.0.1:8081", host: "api.example.com"从中立刻抓取:
-
错误类型关键词:如
Connection refused→ 后端进程未监听;upstream timed out→ 连接建立成功但响应卡住;Connection reset by peer→ 后端崩溃或主动断连 -
upstream 地址:末尾的
upstream: "http://127.0.0.1:8081"是铁证——确认该地址是否真实运行、端口是否开放、协议是否匹配(HTTP vs HTTPS)、防火墙是否放行 -
请求上下文:
client、server、request字段能帮你判断是全量故障,还是仅特定路径(如/v1/order)、特定域名或某类客户端触发
用一条命令筛出高频模式,跳过人工扫屏
别一页页翻日志。针对最近 30 分钟的报错,直接聚合归类:
grep "50[0-9]" /var/log/nginx/error.log | grep "$(date -d '30 minutes ago' '+%Y/%m/%d %H:%M')" | awk -F': ' '{print $3}' | cut -d' ' -f1-6 | sort | uniq -c | sort -nr输出示例:
19 connect() failed (111: Connection refused)
7 recv() failed (104: Connection reset by peer)
这意味着:超时类问题占主导 → 优先查后端处理耗时、proxy_read_timeout 设置、数据库慢查询;若 Connection refused 高频 → 立即执行 systemctl status php-fpm 或 curl -I http://127.0.0.1:8081/health 验证服务存活。
交叉验证上游日志与系统状态,堵死误判漏洞
Nginx 日志只告诉你“送餐失败”,得去后厨查监控录像:
- PHP-FPM 故障?→ 查
/var/log/php-fpm.log是否有server reached pm.max_children(进程池打满)或child exited on signal Segmentation fault(段错误) - Node.js 崩溃?→ 查应用自身日志,重点搜
uncaughtException、FATAL ERROR、OOM - 端口不通?→ 在本机跑
ss -tulnp | grep ':8081';若跨服务器,登录目标机执行journalctl -u your-app --since "30 minutes ago" - 系统级异常?→
dmesg | tail -20看 OOM Killer 是否杀过进程;df -h看磁盘是否写满;ulimit -n和cat /proc/$(pgrep nginx)/limits | grep "Max open files"核对文件描述符是否耗尽
临时调高日志级别,只为精准捕获那一秒
常规生产环境不建议开 info 或 debug,但当问题偶发、难以复现时,可精准启用:
- 在对应
server块中加:error_log /var/log/nginx/api-error.log notice;(比默认error多一层连接拒绝、重试等线索) - 若怀疑 reload 或信号异常,全局临时设为
info,观察reconfiguring、cycle finished等生命周期事件是否完整 - 确认 Nginx 编译含
--with-debug后,才启用debug,并务必指定独立日志文件,避免冲爆磁盘











