http://www.cnblogs.com/apanly/p/5568716.html
最近公司网站被竞争对手用爬虫频繁访问,所以我们这边要禁止这些爬虫访问,我们通过nginx 指令就可以实现了
方法一:直接在LB机器上封IP
1.在 blocksip.conf 文件中加入要屏蔽的ip或者ip端
1
2
3
4
|
$ sudo vim /etc/nginx/blocksip .conf deny 180.168.74.26; deny 91.212.45.0 /24 ; |
2. 在nginx.conf中包含这个文件
1
2
3
4
5
6
|
$ sudo vim /etc/nginx/nginx .conf http { ....... ....... include /etc/nginx/blocksip .conf; } |
3.重启服务
1
|
$ sudo /etc/init .d /nginx reload |
方法二:直接在APP业务机器上操作(有时候LB并不能直接操作)
这个时候我们不能通过$remote_addr获取ip,因为经过LB过来,需要同$http_x_forwarded_for获取,使用nginx map指令
1.通过map指令设置 变量
1
2
3
4
5
6
7
8
9
10
|
$ sudo vim /etc/nginx/nginx .conf http{ ....... ....... map $http_x_forwarded_for $ip_allowed { default allow; ~s*192.168.22.*$ deny; ~s*192.168.21.11$ deny; } } |
2.在vhost 的server 配置中 通过$ip_allowed变量判断
1
2
3
4
5
6
7
|
server{ ........ ........ if ( $ip_allowed = "deny" ) { return 403; } } |
3.重启服务
1
|
sudo /etc/init .d /nginx reload |