1. 程式人生 > >Nginx 禁用IP IP段

Nginx 禁用IP IP段

實現 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段