0

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

2
  • Can you add the relevant bits of your httpd.conf file to the question? Commented Apr 13, 2012 at 10:06
  • I have added the virtual host settings. Is there anything else I should add? Commented Apr 13, 2012 at 10:39

1 Answer 1

2

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.

8
  • 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? Commented Apr 14, 2012 at 10:13
  • Is it Apache's "It works" page, or Tomcat's? Commented Apr 14, 2012 at 18:40
  • It is Apache's "It works page." Commented Apr 15, 2012 at 4:44
  • Interesting... are you sure the request to / has the correct host header to get mapped to this virtual host? Commented Apr 16, 2012 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 Commented Apr 16, 2012 at 12:36

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.