在 Debian 上,Nginx 的日志通常位于 /var/log/nginx/ 目录下,最常见的两个文件是:
下面我分别讲怎么看、怎么解读。
Debian 上 Nginx 默认使用 combined 格式,一行大概长这样:
192.168.1.10 - - [12/Apr/2024:14:32:10 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 ..."
客户端IP - 远程用户 - [时间] "请求方法 URL 协议" 状态码 响应大小 "Referer" "User-Agent"
逐项解释:
| 字段 | 含义 |
|---|---|
| 192.168.1.10 | 客户端 IP |
| - | 远程登录用户(基本都是 -) |
| - | 同上(认证用户) |
| [12/Apr/2024:14:32:10 +0800] | 访问时间(含时区) |
| “GET /index.html HTTP/1.1” | 请求方法、路径、协议 |
| 200 | HTTP 状态码 |
| 612 | 返回内容大小(字节) |
| “-” | 来源页(Referer,直接访问为 -) |
| “Mozilla/5.0 …” | 浏览器 / 客户端信息 |
# 实时查看访问日志
tail -f /var/log/nginx/access.log
# 统计访问最多的 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
# 查看 404 请求
grep ' 404 ' /var/log/nginx/access.log
2024/04/12 14:35:01 [error] 1234#1234: *56 open() "/var/www/html/test.html" failed (2: No such file or directory), client: 192.168.1.10, server: example.com, request: "GET /test.html HTTP/1.1"
时间 [日志级别] 进程ID#线程ID: *连接ID 错误信息, client: 客户端IP, server: 域名, request: 请求内容
在 nginx.conf 中可配置:
error_log /var/log/nginx/error.log warn;
级别从低到高:
debug < info < notice < warn < error < crit < alert < emerg
/var/log/nginx/access.log
/var/log/nginx/error.log
虚拟主机可能单独有:
/var/log/nginx/example.com.access.log
/var/log/nginx/example.com.error.log
warn 或 error如果你有具体的一段日志,可以直接贴出来,我可以帮你逐行解读。