Nginx 日志主要分为 访问日志(access.log) 和 错误日志(error.log)。下面用常见格式 + 示例 + 字段解释的方式,帮你快速读懂它们。
127.0.0.1 - - [10/Nov/2024:14:32:10 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0"
客户端IP 用户标识 认证用户 时间 请求方法 URL 协议 状态码 响应大小 Referer User-Agent
127.0.0.1 - - [10/Nov/2024:14:32:10 +0800] GET /index.html HTTP/1.1 200 612 "-" Mozilla/5.0
✅ 重点字段说明
| 字段 | 含义 |
|---|---|
127.0.0.1 |
客户端 IP |
- |
用户标识(基本不用) |
- |
认证用户(未登录为 -) |
[时间] |
请求时间(时区) |
"GET /index.html HTTP/1.1" |
请求行 |
200 |
HTTP 状态码 |
612 |
返回内容大小(字节) |
"-" |
Referer(来源页面) |
"Mozilla/5.0" |
浏览器 / 客户端信息 |
| 状态码 | 含义 |
|---|---|
| 200 | 正常 |
| 301 / 302 | 重定向 |
| 304 | 缓存未修改 |
| 400 | 请求错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 页面不存在 |
| 500 | 服务器内部错误 |
| 502 | 后端错误(如 PHP / Java) |
| 503 | 服务不可用 |
| 504 | 网关超时 |
2024/11/10 14:32:10 [error] 1234#1234: *5 open() "/usr/share/nginx/html/test.html" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /test.html HTTP/1.1", host: "localhost"
时间 级别 进程ID 错误描述 客户端IP 服务器名 请求信息
2024/11/10 14:32:10 [error] 1234#1234: *5 open() failed (2: No such file or directory) 127.0.0.1 localhost GET /test.html HTTP/1.1
| 级别 | 含义 |
|---|---|
| debug | 调试信息(一般不开启) |
| info | 普通信息 |
| notice | 注意 |
| warn | 警告 |
| error | 错误(最常见) |
| crit | 严重 |
| alert | 紧急 |
| emerg | 系统不可用 |
✅ 生产环境一般设置:
error_log /var/log/nginx/error.log warn;
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
grep "127.0.0.1" access.log
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
grep " 500 " access.log
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
}
常用变量:
$remote_addr:客户端 IP$request:请求$status:状态码$body_bytes_sent:返回大小$http_user_agent:浏览器✅ 网站打不开?
error.log✅ 访问异常?
access.log✅ 被攻击?
如果你愿意,可以把具体的一条日志贴出来,我可以帮你逐字解读,并判断是正常访问还是异常问题。