分析 Nginx 日志是排查问题、性能优化和安全审计的重要手段。下面从日志类型、常用字段、分析思路、工具与实战示例几个方面系统说明。
Nginx 主要有两类日志:
记录每一次 HTTP 请求。
常见路径:
/var/log/nginx/access.log
记录运行错误、配置问题、后端异常等。
常见路径:
/var/log/nginx/error.log
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
| 字段 | 含义 |
|---|---|
$remote_addr |
客户端 IP |
$time_local |
访问时间 |
$request |
请求方法和 URL |
$status |
HTTP 状态码 |
$body_bytes_sent |
返回字节数 |
$http_referer |
来源页面 |
$http_user_agent |
浏览器/爬虫 |
示例:
192.168.1.10 - - [10/Jan/2026:10:01:23 +0800] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0"
error_log /var/log/nginx/error.log warn;
级别(从低到高):
debug < info < notice < warn < error < crit < alert < emerg
✅ 生产环境一般使用 warn 或 error
$request_time)awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' access.log | sort | uniq -c | sort -nr
awk '$9>=500 {print $0}' access.log
awk '{print $4}' access.log | cut -d: -f1-3 | uniq -c
log_format main '$remote_addr - $request - $status - $request_time';
字段说明:
$request_time:请求总耗时$upstream_response_time:后端耗时实时可视化分析
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
功能:
适合:
适合监控:
awk '$9==404 {print $7}' access.log | sort | uniq -c | sort -nr
可能原因:
awk '{print $1}' access.log | sort | uniq -c | sort -nr
封禁 IP:
deny 1.2.3.4;
如果你愿意,我可以:
直接把日志贴出来即可。