【问题标题】:How to perform proxypassreverse with regex如何使用正则表达式执行 proxypassreverse
【发布时间】:2015-05-27 06:34:59
【问题描述】:

过去几天我一直陷入这个问题,我正在使用 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!

【问题讨论】:

    标签: regex apache reverse-proxy


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 如何处理没有主机名的位置标头,比如这个位置:/en/product?我的问题更严重。我想根据发出 ProxyPass 请求的位置在此位置标头中添加不同的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多