Nginx 禁用IP IP段
阿新 • • 發佈:2018-11-16
實現 pad nbsp sip sudo http 我們 ons gin
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
|
Nginx 禁用IP IP段