我们弃用了一些在 http://localhost/test 下可用的软件,现在在 http://localhost/app/testing 下可用。我们正在使用 HAProxy 1.4
因此,我想通过 haproxy,用 /test 替换所有包含 /app/testing/ 的网址。我首先尝试使用 redirect prefix 以保留查询字符串,但 /test 并未从 url 中删除并且具有类似 /app/testing/test/?id=x 的内容。

frontend all
    bind  0.0.0.0:80
    timeout client 86400000
    acl is_test path_beg /test
    redirect prefix /app/testing code 301 if is_test

然后使用了一个 reqrep ,它似乎重定向到新软件,但 url 中的 /test 字符串从未被替换。
frontend all
    bind  0.0.0.0:80
    timeout client 86400000
    reqrep ^([^\ :]*)\ /test[/]?(.*)  \1\ /app/testing/\2

最佳答案

由于 1.4 版无法重写 url 并且我们不想更新 HAProxy,因此我们继续使用 reqrep 并保持旧链接不变

reqrep ^([^\ :]*)\ /test[/]?(.*)  \1\ /app/testing/\2

关于HAProxy reqrep 不替换 url 中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40972885/

10-12 23:46