0

我的规则是;

when HTTP_REQUEST {
if {[HTTP::uri] starts_with "/xxxx"} {
HTTP::redirect https://example.com/yyyy
}
if {[HTTP::uri] starts_with "/zzzz"} {
HTTP::redirect https://example.com/bbbb
}
}

这正如我们所期望的那样工作。我们在https://example.com上有一个虚拟服务器,它有一个池(称为 poolA,带有一个称为 nodeA 的节点)。

我们要做的是修改现有的 irule,以便它不仅进行重定向,而且更改池。我尝试了以下方法;

when HTTP_REQUEST {
  if {[HTTP::uri] starts_with "/xxxx"} {
  HTTP::redirect https://example.com/yyyy
  poolB
}
if {[HTTP::uri] starts_with "/zzzz"} {
HTTP::redirect https://example.com/bbbb
poolB
}
}

poolB 中的 NodeB 上有一个网络服务器,正在侦听正确的端口,并且有一个与方向 URL 匹配的网站。

如果我在 Chrome 中访问https://example.com/xxxx,我会收到以下错误;

错误太多重定向

4

1 回答 1

1

在这种情况下,我会选择开关。如果您正在重定向,则不需要设置池,因为该请求不会继续到池成员。

when HTTP_REQUEST {
  switch -glob [string tolower [HTTP::uri]] {
    "/xxxx*" { HTTP::redirect https://example.com/yyyy }
    "/zzzz*" { HTTP::redirect https://example.com/bbbb }
    "/yyyy*" -
    "/bbbb*" { pool poolB }
  }
}

我们在 DevCentral 上有很多很棒的教程。这是关于 iRules 的名为 The101 的十部分系列中的第一篇文章。

于 2015-11-19T23:13:41.280 回答