【问题标题】:How to bypass nginx proxy a list of IPS如何绕过 nginx 代理的 IPS 列表
【发布时间】:2021-07-04 04:24:09
【问题描述】:

我有一个带有重定向到保存页面的 Nginx 配置:

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

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

【问题讨论】:

    标签: nginx nginx-reverse-proxy nginx-config whitelist


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 感谢您的帮助。可能,这是一个很好的方法,但我使用了“geo”并且这种方法有效。
    【解决方案2】:

    您可以使用 Nginx geo module 根据客户端 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;
    }
    

    我使用类似的设置来屏蔽某些地理区域,但仍允许 Google 抓取工具访问我的网站。

    【讨论】:

    • 非常感谢您的帮助。我使用了这种方法,并且有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多