2012-01-18 50 views
1

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

的httpd-vhosts.con:

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    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> 

回答

2

通过改变Cookie路径位置DIR解决它:

ProxyPassReverseCookiePath /WebApp1/ http://192.168.1.98:8080/WebApp1/ 
+0

我在逆向代理后面遇到了一些问题。大部分事情在初始配置后都工作正常,但有些仍然没有。花了很长时间才发现这与cookie有关。这个解决方案正是我所缺少的,谢谢! – marsze 2014-02-05 09:34:04

1

之一的AJP的优点是它发出的原始URL到Web应用程序。因此,任何由ProxyPassReverseProxyPassReverseCookiePath进行的转换都不是必需的,因此您可以将这些指令退出。

与此无关,ProxyPassReverseCookiePath只是取代了来自Web应用程序的Cookie中的path参数。就你而言,Web应用程序访问的路径与Apache提供的路径相同,不需要替换cookie路径中的任何内容。

我可以想像,为什么你的原始代码不起作用的原因是因为它取代/WebApp1通过/WebApp1/,所以你可能最终在Cookie路径,这可能会搞乱浏览器/WebApp1//。 (我不确定Apache是​​否在这种情况下进行了转换,也不确定它是否会让浏览器感到困惑。)我可以想象,您发布的解决方案是可行的,因为Apache忽略了该指令,因为它包含无效路径。 (我也不确定在这种情况下,Apache是​​如何运作的。)

+0

你说ajp发送原始URL。这不取决于如何设置ProxyPreserveHost? – 2016-10-14 22:26:37

相关问题