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

至于使用何种方法,大家根据情况自己定夺了。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/6359.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论