【问题标题】:Apache proxy cookies works only with the first appApache 代理 cookie 仅适用于第一个应用程序
【发布时间】:2012-01-18 16:48:22
【问题描述】:

坚持将 apache 配置为在不同 PC 上运行在 tomcat 上的应用程序的代理。一切似乎都在第一个应用程序 - WebApp1 上运行。但是左侧的 ProxyPassReverseCookiePath 不起作用。 ProxyPassReverseCookiePath 仅适用于第一个应用程序。访问其他应用程序时,会将 jsessionid 添加到 url。 我错过了什么以及如何修复 WebApp2 和 WebApp3?谢谢

httpd-vhosts.con:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ProxyRequests off
    ProxyPreserveHost on

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /WebApp1/ ajp://192.168.1.98:8009/WebApp1/
    ProxyPassReverse /WebApp1/ ajp://192.168.1.98:8009/WebApp1/
    ProxyPassReverse /WebApp1/ http://192.168.1.98:8080/WebApp1/
    ProxyPassReverseCookiePath /WebApp1 /WebApp1/

    ProxyPass /WebApp2/ ajp://192.168.1.98:8009/WebApp2/
    ProxyPassReverse /WebApp2/ ajp://192.168.1.98:8009/WebApp2/
    ProxyPassReverse /WebApp2/ http://192.168.1.98:8080/WebApp2/
    ProxyPassReverseCookiePath /WebApp2 /WebApp2/

    ProxyPass /WebApp3/ ajp://192.168.1.98:8009/WebApp3/
    ProxyPassReverse /WebApp3/ ajp://192.168.1.98:8009/WebApp3/
    ProxyPassReverse /WebApp3/ http://192.168.1.98:8080/WebApp3/
    ProxyPassReverseCookiePath /WebApp3 /WebApp3/
</VirtualHost>

【问题讨论】:

    标签: apache tomcat cookies proxy reverse-proxy


    【解决方案1】:

    通过更改为cookie路径位置dir解决它:

    ProxyPassReverseCookiePath /WebApp1/ http://192.168.1.98:8080/WebApp1/
    

    【讨论】:

    • 我在使用反向代理后面的 WordPress 时遇到了一些问题。大多数事情在初始配置后运行良好,但有些仍然没有。我花了很长时间才发现这与饼干有关。这个解决方案正是我所缺少的,谢谢!
    【解决方案2】:

    ajp 的优点之一是它将原始 URL 发送到 Web 应用程序。因此,ProxyPassReverseProxyPassReverseCookiePath 的任何转换都不是必需的,因此您可以忽略这些指令。

    与此无关,ProxyPassReverseCookiePath 只是替换来自 Web 应用程序的 cookie 中的 path 参数。与您的情况一样,访问 Web 应用程序的路径与 Apache 提供它的路径相同,无需替换 cookie 路径中的任何内容。

    我可以想象,您的原始代码不起作用的原因是因为它将/WebApp1 替换为/WebApp1/,因此您最终可能会在cookie 路径中找到/WebApp1//,这可能会使浏览器感到困惑。 (我不确定 Apache 在这种情况下是否进行了转换,也不确定它是否会混淆浏览器。)我可以想象您发布的解决方案是有效的,因为 Apache 忽略了该指令,因为它包含无效路径。 (我也不确定 Apache 在这种情况下是否是这样。)

    【讨论】:

    • 你说 ajp 发送原始 URL。不取决于ProxyPreserveHost是怎么设置的吗?
    【解决方案3】:

    我遇到了同样的问题,以下配置解决了我的问题。

    第 1 步:在虚拟主机上添加了 ProxyPreserveHost On 属性。

    第 2 步:为所有应用程序配置 ProxyPassReverseCookiePath,如下所示

       ProxyPassReverseCookiePath /   /WebApp1
    
       ProxyPassReverseCookiePath /   /WebApp2
    
       ProxyPassReverseCookiePath /   /WebApp3
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-14
      • 2015-09-07
      • 2022-10-13
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多