温馨提示×

如何解读Debian Nginx日志

小樊
40
2026-07-27 19:20:08
栏目: 智能运维

解读 Debian 上 Nginx 日志,核心就是搞清楚 日志在哪、格式是什么、怎么看、怎么分析。下面按实战角度系统说明。


一、Nginx 日志在哪里(Debian 默认)

1️⃣ 默认路径

/var/log/nginx/

常见文件:

access.log        # 访问日志
error.log         # 错误日志
access.log.1      # 轮转后的旧日志
error.log.1

2️⃣ 查看日志是否存在

ls -lh /var/log/nginx/

二、两个核心日志类型

日志类型 作用
access.log 记录每一次 HTTP 请求
error.log 记录错误、异常、启动问题

三、access.log(访问日志)解读

1️⃣ 默认日志格式(combined)

IP - - [时间] "请求方法 URL 协议" 状态码 大小 "Referer" "User-Agent"

2️⃣ 示例

192.168.1.10 - - [18/Jan/2026:10:32:15 +0800] "GET /index.html HTTP/1.1" 200 1024 "https://example.com/" "Mozilla/5.0"

逐项解释:

字段 含义
192.168.1.10 客户端 IP
- - 身份认证(通常为空)
[18/Jan/2026:10:32:15 +0800] 请求时间
"GET /index.html HTTP/1.1" 请求行
200 HTTP 状态码
1024 返回内容大小(字节)
"https://example.com/" Referer(来源页面)
"Mozilla/5.0" User-Agent(客户端浏览器/爬虫)

四、常见状态码速查

状态码 含义
200 正常
301 / 302 重定向
304 未修改(缓存)
400 请求错误
403 禁止访问
404 页面不存在
500 服务器内部错误
502 后端错误(如 PHP-FPM)
503 服务不可用
504 网关超时

五、error.log(错误日志)解读

1️⃣ 日志级别

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

Debian 默认通常是:

error_log /var/log/nginx/error.log warn;

2️⃣ 示例

2026/01/18 10:30:12 [error] 1234#1234: *56 open() "/var/www/html/test.html" failed (2: No such file or directory)

解释:

  • error:错误级别
  • 1234#1234:worker 进程 ID
  • *56:连接 ID
  • open() failed:具体错误
  • (2: No such file or directory):系统错误码

六、实时查看日志(非常常用)

实时查看访问日志

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

实时查看错误日志

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

七、常用分析命令(实战)

1️⃣ 统计访问最多的 IP

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

2️⃣ 统计访问最多的 URL

awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

3️⃣ 查看 404 请求

awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr

4️⃣ 查看 5xx 错误

awk '$9 >= 500 && $9 < 600' access.log

八、日志轮转(Debian 默认已配置)

/etc/logrotate.d/nginx

特点:

  • 自动按天/大小切割
  • 自动压缩
  • 防止磁盘写满

查看:

cat /etc/logrotate.d/nginx

九、如果你愿意,我可以帮你:

✅ 逐行解读你真实的 Nginx 日志
✅ 判断是否有攻击(爬虫 / 扫描 / CC)
✅ 优化日志格式(加 $request_time$upstream_response_time
✅ 分析 502 / 504 问题
✅ 配置 JSON 日志(方便 ELK / Grafana)

你可以直接贴一段 access.log 或 error.log,我帮你详细分析。

0