2012-01-18 44 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

相關問題