重定向次数过多 NSX 负载均衡器(HA 代理)应用程序规则

重定向次数过多 NSX 负载均衡器(HA 代理)应用程序规则

我们正在尝试从 / 重定向到 /access/signin,但是通过以下应用程序规则,我们发现 HTTPS 的重定向(循环)太多,HTTP 运行良好。

acl TEST-RDR hdr_dom(Host) -i www.test.com
acl TEST-RDR path_beg /access/signin
http-request redirect location https://www.test.com code 301 if TEST-RDR

任何建议或指示都将非常有用,我是应用程序规则的新手,正在尝试转换 F5 iRule(如下)

when HTTP_REQUEST { 
  set host_info [string tolower [HTTP::host]] 
  set uri_info [string tolower [HTTP::uri]] 
    switch -glob $host_info { 
     "www.test.com" {
       switch -glob $uri_info { 
         "/access/signin*" {
          HTTP::respond 301 Location "https://www.test.com"
         }
         "/*" {
          HTTP::respond 301 Location "https://[HTTP::host][HTTP::uri]"
         }
       }
     }
     "*.test.com" { 
      switch -glob $uri_info { 
        "/access/signin*" {
          HTTP::redirect "https://[HTTP::host][HTTP::uri]"
        }
      }
     }
    }
}

答案1

在 haproxy 中声明acl两次实际上意味着OR这些条件,因此这样:

acl TEST-RDR hdr_dom(Host) -i www.test.com
acl TEST-RDR path_beg /access/signin

意味着Host = www.test.comORpath_beg /access/signin一直计算为真,因为您重定向到同一个域,所以https://www.test.com/重定向到https://www.test.com/并且您得到重定向循环。

尝试以下方法:

acl host_www.test.com hdr_dom(host) -i www.test.com
acl url_access_signin path_beg /access/signin

http-request redirect location https://www.test.com/ code 301 if host_www.test.com url_access_signin

HaproxyAND在构建上述条件时具有隐式功能http-request。我不了解 F5,所以我不能说这是否是准确的翻译。

相关内容