我正在尝试设置 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>
答案1
我已经接近目标了。以下是最终可行的方法:
创建第二个域:
- $ asadmin 创建域 --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>