Nginx 禁用IP IP段

Nginx 禁用IP IP段

 

最近公司網站被競爭對手用爬蟲頻繁訪問,所以我們這邊要禁止這些爬蟲訪問,我們通過nginx 指令就可以實現了

 

方法一:直接在LB機器上封IP

1.在 blocksip.conf 文件中加入要屏蔽的ip或者ip端

$ sudo vim /etc/nginx/blocksip.conf

deny 180.168.74.26;
deny 91.212.45.0/24;

 

2. 在nginx.conf中包含這個文件

$ sudo vim /etc/nginx/nginx.conf
http {
.......
.......
include /etc/nginx/blocksip.conf;
}

3.重啓服務

/usr/local/nginx/sbin/nginx -s reload

方法二:直接在APP業務機器上操作(有時候LB並不能直接操作)

這個時候我們不能通過$remote_addr獲取ip,因爲經過LB過來,需要同$http_x_forwarded_for獲取,使用nginx map指令

1.通過map指令設置 變量

$ 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變量判斷

server{
........
........
    if ( $ip_allowed = "deny" ) {
        return 403;
    }
}

3.重啓服務

/usr/local/nginx/sbin/nginx -s reload

至於使用何種方法,大家根據情況自己定奪了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章