HAProxy 重写和重定向

HA Proxy rewrite and redirect

正在尝试重写和重定向。我一直在尝试这个,它在某种程度上有效,但不是我想要的 100%

acl 旧 url_beg /site/ab http-request 重定向位置 /new/%[query] if old

例如url可以是

我想抓住粗体标记的部分并简单地将用户重定向到 https//host/new/boldmarkedpart

粗体标记部分之后的任何字符串都可以丢弃。例如最后一个例子中的“/asdajshdjasd”。

知道如何做到这一点吗?谢谢!!

如果我没理解错的话,你想拆分 urlpath 部分并得到它的第 4 部分。 在字符串 foo1/foo2/foo3/foo4/foo5 中,您只需要 foo4。 这应该适合你:

acl old path_beg /site/ab
http-request redirect location /new/%[path,field(4,/)] if old

您想要路径中的第 3 个目录,而这里您取第 4 个词,这可能会造成混淆,但那是因为当您将 /foo2/foo3/foo4/foo5 拆分为 / 时,第一个词是空的。 field 转换器记录在此处:https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.1-field

其他说明:

  • %[query] 会 return urlquery 部分,这是 ? 字符之后的所有内容,而您根本没有查询部分在你的例子中。
  • url 在我的测试中有 schema://hostname:port/path,所以测试 acl old url_beg /site/ab 从未匹配,path