如何绕过nginx代理IPS列表



我有一个Nginx配置,可以重定向到保存页面:

location / {
...
if ($setholdingpage = 'True') {
rewrite (^.*$) /holding-page last;
}
proxy_pass $backend;
}

此外,我有一个IP列表,这些IP应该被列入白名单,而不是重定向到保留页面。怎么可能呢?

您可以使用Nginx地理模块根据客户端IP地址创建变量,您可以指定单个IP地址或CIDR范围:

geo $bypassip {
default 0;
64.233.160.0/19 1;
66.102.0.0/20 1;
}

如果IP与您列表中的一个匹配,则覆盖您的变量:

if ($bypassip = 1){
set $setholdingpage False;
}

我使用类似的设置来阻止某些地理区域,但仍然允许谷歌爬虫访问我的网站。

您可以使用allowdeny指令。

如果我纠正了你的错误,白名单在某种程度上会是你的$setholdingpage变量吗?

试试这个

server {
error_page 403=@holding;
location / {
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
proxy_pass http://backend;
}
location /@holding {
root /path/to/your/holding/html;
index holdingv1.html;
}
}

这将把未列入白名单的IP发送到您指定的错误页面。error_page也可以在location中。

没有经过测试,但这应该会奏效。

参考文献:http://nginx.org/en/docs/http/ngx_http_access_module.html#allow

最新更新