一、Nginx日志格式简介
Nginx 默认的访问日志通常长这样:
192.168.0.1 - - [04/May/2025:10:22:33 +0800] "GET /index.html HTTP/1.1" 200 512 "-" "Mozilla/5.0"
日志中的第一个字段 192.168.0.1 就是访问者的IP地址,也是我们统计的目标。
二、使用命令行统计访问量最多的IP
我们可以通过 awk、sort 和 uniq 组合命令,一步一步实现IP统计:
示例命令:
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
命令说明:
awk '{print $1}':提取日志的第一个字段(即IP地址)sort:排序,为后续统计做准备uniq -c:统计每个IP出现的次数sort -nr:按次数降序排列head -n 10:只显示前十条结果
输出结果示例:
320 192.168.1.1
210 10.0.0.2
180 203.0.113.5
三、增强可读性:格式化输出
想让结果更易于阅读?可以进一步优化输出格式:
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10 | awk '{print "IP:", $2, "访问量:", $1}'
输出效果如下:
IP: 192.168.1.1 访问量: 320
IP: 10.0.0.2 访问量: 210
...
这对于日常日志巡检尤其直观。
四、按时间段筛选IP访问量
若只关注某天的访问情况,可结合 grep 过滤日期,例如查看2025年5月4日的统计结果:
grep '04/May/2025' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
五、按请求类型筛选(如 GET/POST)
有时我们只关心某类请求(如GET):
grep '"GET' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
这在分析接口访问频率或恶意爬虫行为时非常有帮助。
六、自动化输出到文件
为了日后分析或制作图表展示,可以将统计结果保存至文件中:
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10 > /home/admin/top10_ip.txt
七、借助香港高性能服务器,保障数据处理效率
在数据分析和日志处理过程中,服务器的计算与磁盘IO性能至关重要。推荐使用 香港vps、香港云服务器和香港独立服务器,具备以下优势:
- 超低延迟连接内地用户,适合部署高并发站点或接口服务
- 带宽灵活升级,适配海量日志写入与数据统计
- 兼容性强,完美支持Nginx、Apache、MySQL等主流组件
选择合适的服务器不仅能提升处理效率,也能为业务运营提供更强大的稳定性与安全保障。
总结
通过一套简单的 Shell 命令,我们就可以高效统计出访问量最多的IP地址,并进一步细化至某个时间段或请求类型。对于需要处理海量访问日志的开发者和运维人员来说,这是非常实用的技巧。
同时,配合性能优越的香港云服务器,可以让这类日志分析更加稳定、快速,进一步助力你的系统稳定运行。