2010-04-09 107 views
4

我有一個配置Apache Tomcat的ProxyPass指令的問題,兩個應用程序在tomcat中有兩個不同的上下文路徑。 tomcat運行在apache後面,我使用apache代理路徑向tomcat發送請求。在Apache中,我想通過主機名而不是上下文路徑訪問這兩個應用程序。Apache - Tomcat ProxyPass VirtualHost - 上下文路徑

場景:

tomcat的

https://domain:8443/app1 
https://domain:8443/app2 

Tomcat中的應用程序在Apache的上下文路徑APP1和APP2

我想啓用這兩個應用程序如下:

https://app1.host/ 
https://app2.host/ 

在Apache中,我爲每個域創建了一個配置:

ProxyPass/https://localhost:8443/app1 
ProxyPassReverse/https://localhost:/8443/app1 

奇怪的是使用上下文路徑APP1只能通過Apache:

https://app1.host/app1 

是否有可能實現與Apache的ProxyPass模塊這樣的設置?

Thx尋求幫助。

回答

10

你應該能夠通過使用虛擬主機來達到你想要的效果。另外,通過AJP協議而不是HTTPS將請求傳遞給tomcat是個好主意。嘗試將其添加到Apache配置

NameVirtualHost *:443 

<VirtualHost *:443> 
    ServerName app1.host 
    ProxyPass/ajp://localhost:8009/app1/ 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName app2.host 
    ProxyPass/ajp://localhost:8009/app2/ 
</VirtualHost> 

如果您沒有更改Tomcat的默認服務器設置,則應該照原樣工作。否則,請確保指定在Tomcat的conf/server.xml文件中配置的AJP端口。應該有類似這樣的一行:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

請確保您有Apache配置加載的mod_proxy和mod_proxy_ajp的模塊,這可能取決於你的Apache安裝不同而異。同時刪除之前配置的'ProxyPass/...'行,因爲它們會干擾新配置。希望這對你有用。

+1

如果您使用Tomcat會話,Tomcat會設置一個JSESSIONID的cookie/APP1(或/應用2)的路徑。然而,瀏覽器會在'/'處看到URLS,所以不會傳遞會話ID cookie。您還需要添加「ProxyPassReverseCookiePath/app1 /」(請參閱​​:http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html) – 2012-10-24 10:09:24

6

你可以嘗試

ProxyPass/https://localhost:8443/app1/ 
ProxyPassReverse/https://localhost:8443/app1/ 

與最終/

+1

您是否可以添加更多信息請? – durron597 2012-12-05 18:12:21