Be Wake Pandey
Be Wake Pandey

Reputation: 511

Apache and Tomcat proxying

Recently, I was in need of using both Apache and Tomcat together in which Apache was to be used as the reverse proxy to forward requests to port 80 to localhost:8080 which I did like this:

<VirtualHost *:*>
        ProxyPass         /  http://localhost:8080/app/
</VirtualHost>  

And it works perfectly well.

Now, what I need to do is: I have Tomcat listening and serving on another port 8082. I need to be able to access it using www.mydomain.com:8082. I tried:

<VirtualHost *:8082>
        ProxyPass         /  http://localhost:8082/app/
</VirtualHost>   

But no luck. And I can't listen on 8082 because Tomcat is doing that.

Upvotes: 0

Views: 84

Answers (1)

Christopher Schultz
Christopher Schultz

Reputation: 20837

What you have above is a (failed) attempt to map the / URL space into two different places. That's never going to work.

When proxying to Tomcat, it's never a good idea to rewrite URL paths (e.g. / -> /app/ because Tomcat is going to get all kinds of confused. It's much better to map individual applications:

<VirtualHost *:*>
  ProxyPass /app1/ http://localhost:8080/app1/
  ProxyPass /app2/ http://localhost:8080/app2/
  ProxyPass /app3/ http://localhost:8082/app3/
  ProxyPass /app4/ http://localhost:8082/app4/
  # If you need a fall-back application for `/`, just map it last.
  ProxyPass / http://localhost:8080/
</VirtualHost>

Note that the last line up there is mapping / to Tomcat's ROOT context (mounted on /'). Don't do this any other way, or you'll spend years trying to make everything work when you could have just done it the recommended way.

Upvotes: 2

Related Questions