Nginx 日志分析实战
在日常运维和网站优化中,Nginx 日志是非常重要的数据来源。通过分析 access.log 和 error.log,我们可以了解网站访问情况、排查问题、发现异常请求,甚至做流量统计与安全防护。本文分享一些常见的 Nginx 日志分析思路和方法。一、Nginx 日志格式简介
Nginx 默认的访问日志通常在:
/var/log/nginx/access.log错误日志在:
/var/log/nginx/error.log常见日志格式(nginx.conf 中定义):
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';一条典型日志示例:
192.168.1.10 - - "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0" "-"
二、常见分析需求与命令
1. 统计访问量(PV)
cat access.log | wc -l2. 统计独立访客数(UV)
awk '{print $1}' access.log | sort | uniq | wc -l3. 查看访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -204. 查看访问最多的 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -205. 统计状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -nr6. 查看最近的错误日志
tail -n 50 error.log
三、安全相关分析
1. 检测爆破行为
grep "wp-login.php" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head2. 检测 CC 攻击(短时间大量请求)
awk '{print $1}' access.log | sort | uniq -c | sort -nr | awk '$1>100'3. 检测扫描器或异常 UA
awk -F\" '{print $6}' access.log | sort | uniq -c | sort -nr | head
四、进阶工具
1. goaccess:实时日志分析工具
yum install goaccess -y # CentOS
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED然后打开 report.html 就能看到漂亮的可视化分析。
2. AWStats / ELK:如果需要更大规模的数据分析,可以接入 ELK (Elasticsearch + Logstash + Kibana),或者使用 AWStats 做长期报表。
五、实战小结
日志是网站问题排查的第一手资料,建议定期分析。
建议配合 logrotate 做日志切割,避免单个日志过大。
如果怀疑异常流量,可以通过 fail2ban/firewalld 自动封禁可疑 IP。
通过对 Nginx 日志的深入分析,不仅能优化网站性能,还能提前发现潜在的安全风险。
页:
[1]