解读 Debian 上 Nginx 日志,核心就是搞清楚 日志在哪、格式是什么、怎么看、怎么分析。下面按实战角度系统说明。
/var/log/nginx/
常见文件:
access.log # 访问日志
error.log # 错误日志
access.log.1 # 轮转后的旧日志
error.log.1
ls -lh /var/log/nginx/
| 日志类型 | 作用 |
|---|---|
| access.log | 记录每一次 HTTP 请求 |
| error.log | 记录错误、异常、启动问题 |
IP - - [时间] "请求方法 URL 协议" 状态码 大小 "Referer" "User-Agent"
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 | 网关超时 |
debug | info | notice | warn | error | crit | alert | emerg
Debian 默认通常是:
error_log /var/log/nginx/error.log warn;
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:连接 IDopen() failed:具体错误(2: No such file or directory):系统错误码tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -nr
awk '$9 >= 500 && $9 < 600' access.log
/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,我帮你详细分析。