收集和避免收集是两个达马藏县的热门话题,再者都想搞他们的小东西,另再者不该他们的小东西被他们搞走。
责任撰稿如是说怎样借助nginx过滤ip来同时实现避免收集,总之也能透过iptable来同时实现。
1.搜寻要过滤的ip
标识符如下表所示:
awk{print$1}nginx.access.log|sort|uniq-c|sort-n
nginx.access.log为笔记文档,
会到如下表所示结论,前面是ip的出访单次,前面是ip,很显著他们须要把出访单次多的ip因此并非蝎子的ip过滤掉,此例之中他们过滤掉
165.91.122.67…13610 202.112.113.192 95772 180.169.22.135 337418 219.220.141.2 558378 165.91.122.67
2.在nginx的加装产品目录上面,增建过滤ip文档,重新命名为blockip.conf,之后新减少过滤ip只需撰稿这个文档方可。重新加入如下表所示文本
标识符如下表所示:
deny 165.91.122.67;
保存一下。
3.在nginx的实用性文档nginx.conf中重新加入如下表所示实用性,能放到http,server,location,limit_except语句块,须要注意相对路径,此例之中nginx.conf,blocksip.conf在同两个产品目录中。
标识符如下表所示:
include blockip.conf;
4.重启一下nginx的服务:/usr/local/nginx/nginx-s reload就能生效了。
高级用法:
过滤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外,其他全部拒绝,
那须要你在blockip.conf中这样写:
标识符如下表所示:
allow 1.1.1.1;allow 1.1.1.2;deny all;
单独网站过滤IP的方法,把include blocksip.conf;放到网址对应的在server{}语句块,
所有网站过滤IP的方法,把include blocksip.conf;放到http{}语句块。
过滤出访过于频繁的IP脚本须要根据实际的nginx log格式,修改,取出出访IP和User-Agent.
在nginx实用性文档中添加一条实用性
标识符如下表所示:
include./vhost/blockip.conf;
脚本文本:
#!/bin/bash nginx_home=/usr/local/webserver/nginx log_path=/usr/local/webserver/nginx/logs tail-n50000/usr/local/webserver/nginx/logs/access.log|awk{print$1,$12}|grep-i-v-E”google|yahoo|baidu|msnbot|FeedSky|sogou”|awk{print$1}|sort|uniq-c|sort-rn|awk{if($1>1000)print”deny”$2″;”}>$nginx_home/conf/vhost/blockip.conf/etc/init.d/nginx reload