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

  1. awk '{print $1}' nginx_access.log |sort |uniq -c|sort -n

nginx.access.log 为nginx访问日志文件所在路径

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

  1. 89 106.75.133.167
  2. 90 118.123.114.57
  3. 91 101.78.0.210
  4. 92 116.113.124.59
  5. 92 119.90.24.73
  6. 92 124.119.87.204
  7. 119 173.242.117.145
  8. 4320 66.249.79.84

2、屏蔽IP的方法:

**

deny与allow

Nginx的denyallow指令是由ngx_http_access_module模块提供,Nginx安装默认内置了该模块。
在nginx中,allow和deny的规则是按顺序执行的。
示例1**:

  1. location /
  2. {
  3. allow 192.168.0.0/24;
  4. allow 127.0.0.1;
  5. deny all;
  6. }

说明:这段配置值允许192.168.0.0/24网段和127.0.0.1的请求,其他来源IP全部拒绝。
示例2:

  1. location ~ "admin"
  2. {
  3. allow 192.168.30.7;
  4. deny all
  5. }

说明:访问的uri中包含admin的请求,只允许192.168.30.7这个IP的请求。

以配置文件方式封禁ip

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

  1. deny 66.249.79.84 ;

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

  1. include guolv_ip.conf;

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

  1. nginx -t

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

  1. the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  2. configuration file /usr/local/nginx/conf/nginx.conf test is successful

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

  1. service nginx reload

3、注意:

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

  1. //屏蔽单个ip访问
  2. deny IP;
  3. //允许单个ip访问
  4. allow IP;
  5. //屏蔽所有ip访问
  6. deny all;
  7. //允许所有ip访问
  8. allow all;
  9. //屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
  10. deny 123.0.0.0/8
  11. //屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
  12. deny 124.45.0.0/16
  13. //屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
  14. deny 123.45.6.0/24
  15. //如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
  16. //那需要你在guolv_ip.conf中这样写
  17. allow 1.1.1.1;
  18. allow 1.1.1.2;
  19. deny all;
  1. 单独网站屏蔽IP的方法,把include guolv_ip.conf; 放到网址对应的在server{}语句块,
  2. 所有网站屏蔽IP的方法,把include guolv_ip.conf; 放到http {}语句块。

参考:http://www.nginx.cn/2487.html