Tomcat – Running Tomcat on an Apache Alias Or Map Port numbers to Hostnames

aliashoststomcat

I have WAMP installed with Apache at port 80 and Tomcat installed at port 8080.
So, I access my php projects from localhost/ and java projects at localhost:8080/
Can I install or map Tomcat to a better address like localhost/java/ or betterstill a pseudoname like javahost instead of localhost
I have added a line to the HOSTS file

127.0.0.1:8080       javahost

But that doesn't work. And I cannot ping to javahost. I guess its not supposed to work that way.

Is there a way out?

WAMPSERVER 2 with APACHE 2.2.11

TOMCAT 6.0.29

WINDOWS XP PRO SP3

Update:

Thanks to @bindbn

I changed the hosts file to

127.0.0.1 javahost

I enabled proxy module in Apache
Then added this to the end of the httpd.conf

<VirtualHost javahost>
ProxyPreserveHost On

ProxyPass         /  http://localhost:8080
ProxyPassReverse  /  http://localhost:8080

</VirtualHost> 

From using Virtualhost & mod_proxy together

Following which javahost also loads the php website hosted at port 80 instead of the localhost:8080 website.

Update
Found this on the interwebs http:// confluence.atlassian.com/display/CONF30/Using+Apache+with+mod_proxy

# Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts)
ProxyRequests Off
ProxyPreserveHost On

#<Proxy *>// changed to below.
<Proxy javahost:80>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /confluence http://localhost:8080/confluence 
ProxyPassReverse /confluence http://localhost:8080/confluence
<Location /confluence>
    Order allow,deny
    Allow from all
</Location>

Changing confluence to java (and changing localhost:8080/confluence to to localhost:8080)gives me @lladnar 's answer, which works well in redirecting localhost/java and javahost/java to localhost:8080, but can this not be used to redirect ONLY javahost to localhost:8080 and keep localhost to read from port 80?
I also changed the lines to,

<Proxy javahost:80>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

Now javahost redirects to localhost:8080 but localhost also redirects to localhost:8080 and so I cannot access the localhost:80 port which houses my php website.

Where am I going wrong? Any Ideas?

My aim is to redirect javahost (or a different IP ) to localhost:8080, keeping localhost:80 accessible from localhost and 127.0.0.1 and my pc's intranet IP

Updated with Answer
This worked. I added this to the end of httpd.conf. proxy module and proxy http module are on. My Workstation had a single LAN IP (192.168.1.4). I added another IP(192.168.1.5) and used that IP instead of the javahost name.Now 192.68.1.5 open my Tomcat website and 192.168.1.4 opens my PHP website.

<VirtualHost 192.168.1.5>
ProxyPreserveHost On

ProxyPass         /  http://localhost:8080/
ProxyPassReverse  /  http://localhost:8080/

</VirtualHost> 

Thanks to @Caleb for the idea of multiple IPs. Thanks to @lladnar and @bindbn for the Proxy code!(I wish I could split the answer credit and since I have no rep(rep 6), I cannot give any rep)

Problems with current setup
Currently people on the intranet use http:// workstationname/ to access the intranet PHP website. They will now have to use the ips for the JAVA and PHP website. Is there a way to bind a specific hostname to a specific IP address

Best Answer

Your hosts file is for address lookups, not forcing routing to a specific port.

You haven't specified your platform here, so these are general possible solutions:

  1. Add a second IP address to your computer and bind apache to one and tomcat to another. Then you could use hosts to specify which one was which.
  2. Setup an Alias in apache to forward to the other URL.
  3. Setup your virtual hosts in apache so that it recognized different names (that you set in your hosts file) and forwards or proxies requests to tomcat if they are for the other host.