Apache代理cookie只适用于第一个应用程序

坚持把Apacheconfiguration成代理运行在不同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> 

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

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

ajp的优点之一是它将原始URL发送到Web应用程序。 所以ProxyPassReverseProxyPassReverseCookiePath任何转换都是不必要的,所以你可以把这些指令放在外面。

与此无关, ProxyPassReverseCookiePath只是简单地替换来自Web应用程序的Cookie中的path参数。 就像你的情况一样,Web应用程序访问的路径与Apache提供的路径相同,不需要替换cookie路径中的任何内容。

我可以想象,你原来的代码不工作的原因是因为它取代了/WebApp1 /WebApp1/ ,所以你最终可能会在cookie路径中存在/WebApp1// ,这可能会让浏览器/WebApp1//困惑。 (我不知道Apache是​​否在这种情况下进行转换,也不知道它是否使浏览器感到困惑。)我可以想象,你发布的解决方案是可行的,因为Apache忽略了指令,因为它包含了一个无效的路径。 (我也不确定在这种情况下,Apache是​​如何运行的。)