gpt4 book ai didi

apache - ProxyPassMatch 与 ProxyPassReverse

转载 作者:行者123 更新时间:2023-12-03 15:00:15 25 4
gpt4 key购买 nike

伙计们,
我们正在尝试为以下场景设置 Apache 反向代理:

  • 传入请求的格式为 http://foo.com/APP/v1/main.html
  • 对于某些服务器,URL 将引用不同的版本,例如 http://foo.com/APP/v2/main.html
  • 上游负载均衡器(HAProxy)会将请求发送到正确的服务器,该服务器将有一个面向 JBoss 服务器的 Apache2 反向代理。
  • 当请求出现在 Apache 2 时,它将具有像 /APP/v1/main.html 这样的请求路径。
  • 我们希望它(反向)代理到 http://localhost:8080/AppContext/main.html ,与 URL 中的版本片段(v1、v2 等)无关。

  • 我一直在尝试这样做:
    ProxyPassMatch ^/.*?/APP.*?/(.*)$ http://localhost:8080/AppContext/$1
    ProxyPassReverse /APP http://localhost:8080/AppContext

    我的问题是:
  • 我使用的是 ProxyPassMatch正确的?
  • 我的 ProxyPassReverse是“静态的”。如何让它知道 /APP 之后的潜在变量?

  • 感谢您的任何见解。

    -拉吉

    最佳答案

    你已经接近了,试着稍微改变一下正则表达式来解释版本片段:

    ProxyPassMatch ^/.*?/APP.*?/v[0-9]+/(.*)$ http://localhost:8080/AppContext/$1
    ProxyPassReverse主要是为了确保在代理应用程序给出的响应中即时重写位置 header 字段。所以当它返回一个 301 重定向到,比如说, http://localhost:8080/AppContext/something , apache 知道把它改成 /APP/v1/something所以代理背后的信息不会被暴露。因为您在反向代理中使用了动态 URL,所以这里有几个选择。您可以将其发送到 HAProxy 负载平衡器(不确定适合您的位置),或者您可以选择一个并希望获得最好的结果。例如,如果您在 /APP/balancer/ 有一个负载均衡器。然后将请求发送到 /APP/v1/ , /APP/v2/ , /APP/v3/等。然后你可以这样做:
    ProxyPassReverse /APP/balancer http://localhost:8080/AppContext

    否则,您可以将其指向一个并希望最好:
    ProxyPassReverse /APP/v1 http://localhost:8080/AppContext

    关于apache - ProxyPassMatch 与 ProxyPassReverse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852238/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com