HAProxy - 根据条件执行多次重写

HAProxy - 根据条件执行多次重写

我正在尝试根据某些条件重写 URI 以及主机标头。以下是我想要实现的示例:

我要求http://sub1.example.com/test/files/other

if hdr_beg(Host) sub1.example.com and path_beg /test
    rewrite host header to sub2.example.com
    rewrite URI to /files/other (in other words, remove test from the URI)

最终结果应该指向 sub2.example.com/files/other,而用户却不知情。

我尝试过以下配置:

acl host_beg_sub1 hdr_beg(Host) sub1.example.com
acl path_beg_test path_beg /test
rewrite host header if host_beg_sub1 path_beg_test
rewrite URI if host_beg_sub1 path_beg_test

显然,这不能按预期工作,因为在主机头被修改后,第二次重写将不会触发。

由于其他流量的 URI 可能以测试开头,因此我无法无条件重写。

提前致谢!

答案1

如果您想要进行大量替换,您可能需要考虑将它们放在后端。

frontend
    acl host_beg_sub1 hdr_beg(Host) sub1.example.com
    acl path_beg_test path_beg /test
    use_backend sub2redirect if host_beg_sub1 path_beg_test 

backend
    reqirep ^Host:\ sub1.example.com   Host:\ sub2.example.com
    reqirep ...url rewriting 
    server ...

相关内容