Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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

share|improve this question

3 Answers 3

up vote 0 down vote accepted

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.
share|improve this answer
    
WinXP Pro SP3 is my OS –  abel Oct 11 '10 at 15:18
    
I would suggest the #1 solution here as being the most robust and easiest to implement. Add a second IP address to your network configuration, then edit the configs of apache and tomcat to each bind to a specific address only instead of all/0.0.0.0. Any of the proxy/rewrite/forward solutions will require apache configs to be right and the daemon running for you to reach your tomcat server. –  Caleb Oct 11 '10 at 15:27
    
+1 if I had the rep @Caleb Currently My PC has 2 ips(3 actually), 127.0.0.1 , 192.168.1.4 (and a ISP assigned dynamic IP). Problem is the php server is accessed using the second ip on the network which runs the intranet website. –  abel Oct 11 '10 at 15:33
    
I would want the solution to work on the intranet network too. –  abel Oct 11 '10 at 15:33
    
No problem there. Multiple IP's on your interface should all be reachable from outside the box just as easily as from inside. You could either do it by IP or have people edit there hosts file so they can have a name shortcut for it, or have your DNS zone administrator add an entry for your second IP so it has a qualified name in your intranet zone. –  Caleb Oct 12 '10 at 20:08

Edit(remove :8080)

127.0.0.1       javahost

Add in apache conf virtualhost javahost

ProxyPass         /  http://localhost:8080
ProxyPassReverse  /  http://localhost:8080
share|improve this answer
    
i added that to the end of httpd.conf starting from virtualhost javahost. my server doesn't start now. –  abel Oct 11 '10 at 15:25
    
I enabled proxy module and have updated the question –  abel Oct 11 '10 at 15:44

In your current question:

Change <VirtualHost javahost> to <VirtualHost *:80> so that it listens only to port 80 on all interfaces. You can substitute the asterisk with localhost if you only want the site accessible from the local machine.

Then, change the proxypass and proxypassreverse to:

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

Then http://localhost/java should automatically be proxied to Tomcat when you access it in your browser.

share|improve this answer
    
+1 Thank you. I found this on the interwebs which does the same thing,confluence.atlassian.com/display/CONF30/… is there anyway I can use javahost ? –  abel Oct 12 '10 at 7:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.