温馨提示×

如何定位nginx日志中的报错

小樊
36
2026-10-11 12:13:04
栏目: 编程语言

定位 Nginx 日志中的报错,通常可以按下面几个步骤来做,从找日志文件 → 看错误类型 → 精确定位请求 → 结合配置分析。


一、先确认 Nginx 日志在哪里

1. 常见默认路径

  • 错误日志(最重要)
    /var/log/nginx/error.log
    
  • 访问日志
    /var/log/nginx/access.log
    

2. 如果不在默认位置

查看 Nginx 配置:

nginx -T | grep -E 'error_log|access_log'

常见配置示例:

error_log /var/log/nginx/error.log error;
access_log /var/log/nginx/access.log;

二、重点看 error.log(报错核心)

1. 实时查看报错

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

2. 按错误级别过滤

Nginx 错误级别:

debug < info < notice < warn < error < crit < alert < emerg

只看 error 及以上:

grep -E 'error|crit|alert' /var/log/nginx/error.log

三、常见错误日志含义(快速定位)

1. 权限问题(非常常见)

Permission denied

可能原因

  • 网站目录权限不对
  • Nginx 用户(www-data / nginx)无读取权限

排查

ps aux | grep nginx
ls -l /path/to/webroot

2. 文件找不到

No such file or directory

或

open() "/xxx" failed

可能原因

  • root 路径写错
  • 文件确实不存在

3. 上游服务报错(反向代理)

connect() failed (111: Connection refused)
upstream timed out

说明

  • Nginx 连不上后端(PHP / Java / Node)
  • 后端服务挂了或端口错

4. 配置错误

unknown directive
duplicate location

检查配置

nginx -t

四、结合 access.log 定位“哪一个请求出错”

1. 看状态码

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c

常见异常码:

  • 404:资源不存在
  • 500:后端报错
  • 502:后端无响应
  • 504:后端超时

2. 定位具体请求

grep "500" /var/log/nginx/access.log

或按 IP:

grep "1.2.3.4" /var/log/nginx/access.log

五、使用时间线关联错误

典型排查思路:

  1. access.log 发现 502
  2. 同时看 error.log 同一时间
  3. 发现 connect() failed
  4. 检查后端服务

示例:

grep "2026/01/20 10:30" /var/log/nginx/error.log

六、推荐排查流程(实战)

✅ 1. nginx -t
✅ 2. tail -f error.log
✅ 3. 复现问题
✅ 4. 看 access.log 状态码
✅ 5. 根据错误类型查配置 / 后端


如果你愿意,可以把一段 Nginx 报错日志或你的 Nginx 配置发出来,我可以直接帮你定位是哪一类问题。

0 踩