1

I'm trying to set up Apache + Glassfish so that I can access two different webapps on the same physical host, differentiated by the hostname in the URL.

So if I visit http://host1.com, I'll get app1. If I visit http://host2.com, I'll get app2. host1 and host2 both resolve to the same IP address.

I've been able to get this working in a basic way with mod_proxy and Glassfish virtualservers using this guide. But the user still needs to specify the context-root for one of the apps, i.e. http://host1.com/app1.

How can I set things up so that both apps appear as the "root" in their respective URLs?

Do I need two separate Glassfish domains?

Here's the apache config I'm using:

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

1

I was close. Here's what ended up working:

Create a 2nd domain:

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

Deploy both apps to the context root in their respective domains. You specify domain by giving the admin port:

  • $ asadmin deploy --contextroot "/" target/app1.war # domain1
  • $ asadmin deploy --contextroot "/" --port 5048 target/app2.war # mydomain

The new domain will run on port 5080, so configure mod_proxy to use that:

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.