如何解决如何绕过 nginx 代理的 IPS 列表
我有一个 Nginx 配置,重定向到保存页面:
location / {
...
if ($setholdingpage = 'True') {
rewrite (^.*$) /holding-page last;
}
proxy_pass $backend;
}
另外,我有一个 IP 列表,这些 IP 应该被列入白名单,而不是重定向到保留页面。怎么办?
解决方法
您可以使用 Nginx geo module 创建基于客户端 IP 地址的变量,您可以指定单个 IP 地址或 CIDR 范围:
geo $bypassip {
default 0;
64.233.160.0/19 1;
66.102.0.0/20 1;
}
如果 IP 与列表中的 IP 匹配,则覆盖您的变量:
if ($bypassip = 1){
set $setholdingpage False;
}
我使用类似的设置来阻止某些地理区域,但仍允许 Google 抓取工具访问我的网站。
,您可以使用 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。