我有一个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;
}
我使用类似的设置来阻止某些地理区域,但仍然允许谷歌爬虫访问我的网站。
您可以使用allow
deny
指令。
如果我纠正了你的错误,白名单在某种程度上会是你的$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