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

时间:2015-05-27 06:35:00

标签: regex apache reverse-proxy

过去几天我遇到了这个问题,我正在使用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!

1 个答案:

答案 0 :(得分:6)

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

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

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

如果您的代理服务器将重定向发布到正确的前端URL(或不使用重定向),则不需要ProxyPassReverse。如果你确实需要它,那么你在这个例子中运气不好,因为它不接受正则表达式。

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