RSS

Using Apache Virtual Hosts and ProxyPass Together

Wed, Jul 23, 2008    (Rating: 5 stars, Click to rate this article!) Loading ... Loading ...

Servers


I recently ran into a situation where I had a server with Apache on it that was already hosting a few PHP sites using VirtualHost mappings, but I now wanted to add a new Tomcat-hosted site to the same machine.

In a way, what I wanted was to setup a new VirtualHost entry on Apache to handle the new domain but also make use of the ProxyPass and ProxyReversePass directives to have Apache transparently pass-through traffic from the VirtualHost domain to Tomcat running in the background on some non-conflicting port, like port 80.

At first I didn’t know how to approach this problem; the Googling I was doing was showing me how to use the VirtualHost directive (which I already had a few of) or the ProxyPass/ProxyPassReverse… but not both together.

I thought maybe what I was trying to do didn’t make sense, until I came across an article on the Atlassian website for suggestions on how to setup one of their products.

It seems that in order to use both of these constructs together in Apache, it’s as straight forward as you might thing… you simply put your ProxyPass and ProxyPassReverse mappings inside your VirtualHost declaration, like so:

<VirtualHost *:80>
    ServerAdmin john@doe.com
    ServerName <my domain>.com
    ServerAlias www.<my domain>.com
    ProxyPass / http://localhost:8080/<web-app context root>/
    ProxyPassReverse / http://localhost:8080/<web-app context root>/
    ErrorLog logs/<my domain>.com-error_log
    CustomLog logs/<my domain>.com-access_log combined
</VirtualHost>

NOTE: Don’t forget the trailing / at the end of the mapped URL for ProxyPass and ProxyPassReverse; otherwise your traffic will get redirected to invalid URLs like http://mydomain.comblahblah, instead of /blahblah.

Notice the ProxyPass mappings to the root (/) which is safe to do since it’s occuring inside the VirtualHost. Very cool trick and I owe thanks to Marc Chung of OpenRain getting me started down the right Apache-directive-path when I began researching this.

Share This on Your Favorite Social Network:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Propeller
  • Reddit
  • Technorati
  • StumbleUpon
  • description
  • MisterWong
  • TwitThis
  • Slashdot
  • SphereIt
, , , , , , ,

This post was written by:

Riyad Kalla - who has written 18 posts on kallasoft.

Riyad has participated in the software industry in Open Source, research and commercial software design and development both professionally and as a hobby. Riyad leads the Product Services team for a industry leading tech company out of Dallas, writes software in his spare time and most importantly hopes the information here helps developers out there.

1 Comments For This Post

  1. MIke Boland Says:

    this is fine for sites with no session state - i have this fie on a site with no security as oon as i added spring security it does not work. the proxy needs to go to the same contexts as the war file

1 Trackbacks For This Post

  1. Recent Links Tagged With "virtualhost" - JabberTags Says:

    [...] Note to self: Phusion Passenger and PassengerMaxPoolSize Saved by pithcell on Sat 27-9-2008 Using Apache Virtual Hosts and ProxyPass Together Saved by sawing14s on Sat 27-9-2008 apache2 mod-jk Saved by hsmLove on Fri 26-9-2008 Setting [...]

Leave a Reply