|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在日常运维和网站优化中,Nginx 日志是非常重要的数据来源。通过分析 access.log 和 error.log,我们可以了解网站访问情况、排查问题、发现异常请求,甚至做流量统计与安全防护。本文分享一些常见的 Nginx 日志分析思路和方法。
一、Nginx 日志格式简介
Nginx 默认的访问日志通常在:
- /var/log/nginx/access.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 - - [20/Aug/2025:12:10:21 +0800] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0" "-"
复制代码
二、常见分析需求与命令
1. 统计访问量(PV)
2. 统计独立访客数(UV)
- awk '{print $1}' access.log | sort | uniq | wc -l
复制代码 3. 查看访问最多的 IP
- awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20
复制代码 4. 查看访问最多的 URL
- awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -20
复制代码 5. 统计状态码分布
- awk '{print $9}' access.log | sort | uniq -c | sort -nr
复制代码 6. 查看最近的错误日志
三、安全相关分析
1. 检测爆破行为
- grep "wp-login.php" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head
复制代码 2. 检测 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 日志的深入分析,不仅能优化网站性能,还能提前发现潜在的安全风险。
|
|