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

MKA*_*idi 4 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}
Run Code Online (Sandbox Code Playgroud)

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

Don*_*oma 7

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

ProxyPassMatch ^/server-(\d+)/$ server-$1.{My server}
Run Code Online (Sandbox Code Playgroud)

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

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

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