服务器设置和教程 · 5 5 月, 2025

如何快速统计Nginx日志中访问量前十的IP地址

 

一、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

我们可以通过 awksortuniq 组合命令,一步一步实现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地址,并进一步细化至某个时间段或请求类型。对于需要处理海量访问日志的开发者和运维人员来说,这是非常实用的技巧。

同时,配合性能优越的香港云服务器,可以让这类日志分析更加稳定、快速,进一步助力你的系统稳定运行。