Mod-Proxy
用於在單個主機上執行多個應用程序的 Apache/Glassfish 配方
我正在嘗試設置 Apache + Glassfish,以便我可以訪問同一物理主機上的兩個不同的 web 應用程序,由 URL 中的主機名區分。
所以如果我訪問http://host1.com,我會得到
app1
. 如果我訪問http://host2.com,我會得到app2
.host1
並且host2
都解析到相同的IP地址。使用本指南,我已經能夠使用 mod_proxy 和 Glassfish 虛擬伺服器以基本方式進行此工作。但是使用者仍然需要為其中一個應用程序指定上下文根,即.
http://host1.com/app1
如何進行設置,以便兩個應用程序在各自的 URL 中顯示為“根”?
我需要兩個單獨的 Glassfish 域嗎?
這是我正在使用的 apache 配置:
<VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://localhost:8080/app1 ProxyPassReverse / http://localhost:8080/app1 ServerName host1.com </VirtualHost> <VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/app2 ServerName host2.com </VirtualHost>
我很接近。這是最終的工作:
創建第二個域:
- $ asadmin create-domain –portbase 5000 –profile developer mydomain
- $ asadmin 啟動域 mydomain
將這兩個應用程序部署到各自域中的上下文根。您通過提供管理埠來指定域:
- $ asadmin deploy –contextroot “/” target/app1.war # domain1
- $ asadmin deploy –contextroot “/” –port 5048 target/app2.war # mydomain
新域將在埠 5080 上執行,因此配置 mod_proxy 以使用它:
<VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ServerName host1.com </VirtualHost> <VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://localhost:5080/ ProxyPassReverse / http://localhost:5080/ ServerName host2.com </VirtualHost>