首页 » nginx » 正文

Nginx查找访问量最大的IP地址

awk '{print $1}' nginx访问日志文件所在路径 | sort | uniq -c | sort -n -k 1 -r | head -n 100
比如:
cat /usr/local/nginx/log/nginx.access.log |awk '{print $1}'|sort|uniq -c|sort -n -k 1 |tail -n 100
或者:
awk '{print $1}' /usr/local/nginx/log/nginx.access.log |awk '{print $1}'| sort | uniq -c | sort -n -k 1 -r | head -n 100
nginx日志文件第一列为访问IP地址,用AWK截取出IP地址,然后用sort命令进行排序
sort命令会对每列第一个字符进行比较,如果相同则比较第二个字符,以此类推
排序之后用uniq命令进行IP数值统计,-c表示统计相同内容行出现的次数
-n表示根据字符串数值比较
-k 1表示对第一列进行排序
-r表示反序
排列后用head命令取前面100个IP,如果是后面100个就是tail -n 100
sort
将文件进行排序并输出
sort(选项)(参数)
选项
-b:忽略每行前面开始出的空格字符; 
-c:检查文件是否已经按照顺序排序; 
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; 
-f:排序时,将小写字母视为大写字母; 
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; 
-m:将几个排序号的文件进行合并; 
-M:将前面3个字母依照月份的缩写进行排序; 
-n:依照数值的大小排序; 
-o<输出文件>:将排序后的结果存入制定的文件; 
-r:以相反的顺序来排序; 
-t<分隔字符>:指定排序时所用的栏位分隔字符; +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
uniq命令 用于报告或忽略文件中的重复行,一般与sort命令结合使用。
语法
uniq(选项)(参数)
选项
-c或——count:在每列旁边显示该行重复出现的次数; 
-d或--repeated:仅显示重复出现的行列; 
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位; 
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符; 
-u或——unique:仅显示出一次的行列; 
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

如果要对某个访问量过大的IP进行禁止访问,比如爬虫

在 /usr/local/nginx/conf 目录下创建 black目录,然后创建blacklist.conf 文件
如下格式输入禁止访问的 IP
deny 123.123.123.123
deny 125.125.125.125
然后在nginx.conf配置文件的http字段添加include  black/blacklist.conf内容,重新加载nginx配置文件即可
systemctl reload nginx

发表评论