Nginx 禁用IP IP段

Posted 即学即码工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.重启服务

$ sudo /etc/init.d/nginx 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.重启服务

sudo /etc/init.d/nginx reload



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


原文地址:Nginx 禁用IP IP段
标签:nginx   block   ip   deny   

以上是关于Nginx 禁用IP IP段的主要内容,如果未能解决你的问题,请参考以下文章

nginx 配置禁用ip地址访问

python分析apache和nginx日志文件输出访客ip列表的代码

通过 AWS OpsWorks Nginx/Unicorn 服务器上的直接 IP 地址禁用 Web 访问

nginx屏蔽ip配置

nginx禁止特定IP访问

网关开发ngx嵌套lua时处理CIDR表示的IP地址段