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

Regex 如何使用正则表达式执行proxypassreverse,regex,apache,reverse-proxy,Regex,Apache,Reverse Proxy,在过去的几天里,我一直在解决这个问题,我正在使用Apache server的反向代理,通过在配置文件中进行以下更改,我成功地运行了反向代理: 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

在过去的几天里,我一直在解决这个问题,我正在使用Apache server的反向代理,通过在配置文件中进行以下更改,我成功地运行了反向代理:

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-$1.{My server}
ProxyPassReverse
的目的是修复代理服务器为自己发出的任何位置头。例如,如果我将mywebsite.com代理到bluewebsite.com,bluewebsite.com发出重定向到bluewebsite.com/1的命令,ProxyPassReverse将拦截该命令并将我重定向到mywebsite.com/1

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

下面是另一个可能对您有所帮助的问题:

如何处理没有主机名的位置头,比如这个位置:/en/product?我的问题更糟。我想根据ProxyPass请求发出的位置,将不同的字符串预先添加到此位置头。