如何使用正则表达式执行 proxypassreverse

How to perform proxypassreverse with regex

过去几天我一直被这个问题困扰,我使用的是 Apache 服务器的反向代理,我通过在配置文件中进行以下更改设法 运行 反向代理:

ProxyPass: /server-01/ server-01.{My server}
ProxyPassReverse: /server-01/ server-01.{My server}

ProxyPass: /server-02/ server-02.{My server}
ProxyPassReverse: /server-02/ server-02.{My server}

ProxyPass: /server-03/ server-03.{My server}
ProxyPassReverse: /server-03/ server-03.{My server}

ProxyPass: /server-04/ server-04.{My server}
ProxyPassReverse: /server-04/ server-04.{My server}

所有这一切都有效,但我想让它动态化,这样我就不必添加新代码并在添加新代理服务器时重新启动 Apache!

要使用正则表达式,您必须使用 ProxyPassMatch:

ProxyPassMatch ^/server-(\d+)/$ server-.{My server}

ProxyPassReverse 的目的是修复代理服务器为自己发布的任何位置 headers。例如,如果我将 mywebsite.com 代理到 bluewebsite.com 并且 bluewebsite.com 发出重定向到 bluewebsite.com/1,ProxyPassReverse 将拦截它并将我重定向到 mywebsite.com/1 .

如果您的代理服务器发出重定向到正确 front-end URL(或不使用重定向)的问题,则不需要 ProxyPassReverse。如果您确实需要它,那么在此示例中您就不走运了,因为它不接受正则表达式。

这是另一个可能对您有帮助的问题: ProxyPassMatch with ProxyPassReverse