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

I have an application running on tomcat at http://www.example.com:9090/mycontext. The host name in server.xml points to www.example.com. I do not have localhost anymore. I am using apache to forward requests to tomcat using mod_proxy. Things work fine as long as the ProxyPath is /mycontext. The server name setup in virtual host is www.abc.com and http://www.abc.com/mycontext works fine. However I would like to ignore the context path and simply use http://www.abc.com/ to forward requests to http://www.example.com:9090/mycontext. When I do this, apache shows me a blank page. What am I missing here? I have not changed anything in server.xml except the default host to www.example.com.

<VirtualHost *:80>
 ServerName www.abc.com

 ProxyRequests Off
 ProxyPreserveHost On

 <Proxy *>
 Order deny,allow
 Allow from all
 </Proxy>

 ProxyPass / http://www.example.com:9090/mycontext
 ProxyPassReverse / http://www.example.com:9090/mycontext
 </VirtualHost>

Thanks

share|improve this question
    
Can you add the relevant bits of your httpd.conf file to the question? –  meulop Apr 13 '12 at 10:06
    
I have added the virtual host settings. Is there anything else I should add? –  user10211 Apr 13 '12 at 10:39
add comment

1 Answer

Matching trailing slashes are important in mod_proxy.

ProxyPass / http://www.example.com:9090/mycontext

This will take a request to http://www.abc.com/something and proxy it to http://www.example.com:9090/mycontextsomething - not terribly helpful!

Try this configuration, instead:

ProxyPass / http://www.example.com:9090/mycontext/
ProxyPassReverse / http://www.example.com:9090/mycontext/

Also - if Tomcat's expecting www.example.com as a host header, then you probably do not want that ProxyPreserveHost On directive.

share|improve this answer
    
Thanks a lot for your help. The solution partially worked. With the trailing slash added, a page should be shown when http ://www.abc.com/ is requested which corresponds to http ://www.example.com:9090/mycontext/. Instead it goes to the "It works" page. For other URLs such as http ://www.abc.com/test it does take me to http ://www.example.com:9090/mycontext/test. How do I solve the first bit? –  user10211 Apr 14 '12 at 10:13
    
Is it Apache's "It works" page, or Tomcat's? –  Shane Madden Apr 14 '12 at 18:40
    
It is Apache's "It works page." –  user10211 Apr 15 '12 at 4:44
    
Interesting... are you sure the request to / has the correct host header to get mapped to this virtual host? –  Shane Madden Apr 16 '12 at 1:49
    
I checked the apache access log. It shows that a request made to / gets directed to /mycontext/. Should it explicitly show example.com:9090/mycontext –  user10211 Apr 16 '12 at 12:36
show 3 more comments

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.