Apache/Glassfish 在单个主机上运行多个应用程序的方法

Apache/Glassfish 在单个主机上运行多个应用程序的方法

我正在尝试设置 Apache + Glassfish,以便我可以访问同一物理主机上的两个不同的 Web 应用程序,通过 URL 中的主机名进行区分。

所以如果我访问http://host1.com,我会得到app1。如果我访问http://host2.com,我会得到app2host1并且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>

相关内容