nginx统计访问量最高的ip并封禁IP

1、查服务器所有访问者ip方法:

命令统计apache或nginx日志中访问最多的100个ip及访问次数,这个在以前做日志统计的时候经常用到

awk '{print $1}' nginx访问日志文件所在路径 | sort | uniq -c | sort -n -k 1 -r | head -n 100

image.png

会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不知道哪里的ip屏蔽掉,如下面结果, 
若 120.132.241.135 不为知道则需要屏蔽:

image.png

2、屏蔽IP的方法: 

在nginx的安装目录下面,新建屏蔽ip文件,命名为guolv_ip.conf,以后新增加屏蔽ip只需编辑这个文件即可。 

加入如下内容并保存:

deny    120.132.241.135;

在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location语句块,需要注意相对路径,本例当中nginx.conf,guolv_ip.conf在同一个目录中。

include guolv_ip.conf;

保存nginx.conf文件,然后测试现在的nginx配置文件是否是合法的:

nginx -t

如果配置没有问题,就会输出:

the configuration file /opt/nginx/conf/nginx.conf syntax is ok
configuration file /opt/nginx/conf/nginx.conf test is successful

如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,重载 nginx 配置文件:

systemctl restart nginx.service


3、注意:

屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问。

//屏蔽单个ip访问
deny IP;
 
//允许单个ip访问
allow IP;
 
//屏蔽所有ip访问
deny all;
 
//允许所有ip访问
allow all;
 
//屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8

//屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
deny 124.45.0.0/16

//屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
deny 123.45.6.0/24

//如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
//那需要你在guolv_ip.conf中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;


单独网站屏蔽IP的方法,把include guolv_ip.conf; 放到网址对应的在server{}语句块,
所有网站屏蔽IP的方法,把include guolv_ip.conf; 放到http {}语句块。


猜你喜欢

转载自blog.51cto.com/meiling/2174251