分析Nginx日志统计日志中访问大于100次的IP ?

参考回答:

要分析 Nginx 访问日志中访问超过 100 次的 IP,可以通过以下步骤:

  1. 定位 Nginx 访问日志文件:通常,Nginx 的访问日志位于 /var/log/nginx/access.log,但具体路径可能根据系统配置不同而不同。

  2. 使用 awk 提取 IP 地址:使用 awk 命令提取日志中的 IP 地址部分。

  3. 使用 sort 排序并统计 IP 出现的次数:将提取出的 IP 地址进行排序并统计每个 IP 地址的访问次数。

  4. 使用 awk 过滤访问次数大于 100 次的 IP:通过 awk 进一步筛选出访问次数超过 100 次的 IP。

命令示例:

cat /var/log/nginx/access.log | awk '{print 1}' | sort | uniq -c | sort -nr | awk '1 > 100'
Bash

命令解析
cat /var/log/nginx/access.log:输出访问日志内容。
awk '{print $1}':提取日志中的第一个字段(即客户端 IP 地址)。
sort:对 IP 地址进行排序。
uniq -c:统计每个 IP 地址出现的次数。
sort -nr:按出现次数倒序排序(-n 为数值排序,-r 为反向排序)。
awk '$1 > 100':筛选出访问次数大于 100 的 IP 地址。

详细讲解与拓展:

1. Nginx 访问日志格式

Nginx 的默认日志格式为 combined,记录了请求的客户端 IP、时间戳、请求方法、URL、HTTP 状态码、响应大小等信息。日志的示例:

127.0.0.1 - - [07/Feb/2025:10:05:23 +0000] "GET /index.html HTTP/1.1" 200 1034 "-" "Mozilla/5.0"
Log

其中,第一个字段(127.0.0.1)就是客户端的 IP 地址。

2. 逐步分析 IP 访问次数

通过上述命令提取的 IP 访问统计信息,可以帮助我们识别:
频繁访问的正常用户:在某些高流量网站中,正常用户可能会访问较多的页面。
异常访问的爬虫或攻击者:如果某个 IP 在短时间内请求大量页面,可能是恶意爬虫或 DDoS 攻击源。

3. 使用 awk 进一步筛选

在统计 IP 访问次数时,使用 awk '$1 > 100' 可以让你轻松筛选出访问次数超过 100 次的 IP。$1 表示 uniq -c 输出的第一个字段,即每个 IP 的访问次数。

4. 日志分析工具

如果日志文件非常大,使用上述命令时可能会比较慢。可以考虑使用 GoAccessAWStats 等日志分析工具,或者将日志数据导入到 Elasticsearch 中进行更高效的查询和分析。

总结:

通过分析 Nginx 访问日志,可以识别出访问次数超过 100 次的 IP,这对于安全防护、流量分析和爬虫防范非常有用。通过组合使用 awksortuniqhead 等命令,可以高效地提取和分析日志中的关键信息,帮助你快速定位潜在的异常流量或攻击源。

发表评论

后才能评论