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

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

所以如果我访问http://host1.com ,我会得到app1 。 如果我访问http://host2.com ,我会得到app2host1host2都parsing为相同的IP地址。

我已经能够使用本指南通过mod_proxy和Glassfish虚拟服务器以基本的方式获得这个工作。 但用户仍然需要为其中一个应用程序指定上下文根,例如http://host1.com/app1

我怎样才能设置,使两个应用程序在各自的URL中显示为“根”?

我需要两个独立的Glassfish域吗?

这里是我使用的Apacheconfiguration:

 <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> 

我很接近。 以下是结束了工作:

创build第二个域:

  • $ asadmin create-domain –portbase 5000 –profile developer mydomain
  • $ asadmin start-domain mydomain

将这两个应用程序部署到各自域中的上下文根。 您通过给pipe理员端口指定域:

  • $ asadmin deploy –contextroot“/”target / app1.war#domain1
  • $ asadmin deploy –contextroot“/”–port 5048 target / app2.war#mydomain

新的域将运行在端口5080,所以configurationmod_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>