How to let Apache 2 forward requests for different URLs to different folders is described in a former article.
These setting were used and tested in Linux Debian 5 Lenny. They should also work in other distributions like RedHad, Suse and Ubuntu, as well as Windows and Mac OS systems.
Make sure mod_proxy_ajp is installedLook into /etc/apache2/mods-available for proxy.load and proxy_ajp.load to make sure the according mods are available.
Look into /etc/apache2/mods-enabled for proxy.load and proxy_ajp.load to make sure both mods are enabled.
From Apache2.2 this should normally be all set already, if not read here on how to enable mod_proxy_ajp.
Apache2 configurationAs described in a former post I use virtual host to handle requests for different URLs and forward them to certain folders in the /var/www folder. To forward requests to a certain URL to tomcat can also be done by creating a virtual host.
ProxyPass and ProxyPassReverse are classic reverse proxy directives used to forward the stream to another location. ajp://… is the AJP connector location (your tomcat’s server host/port)
The changes have to be done in the sites-enabled/000-default file in the apache2 home folder. Use for example nano or vim to edit the file and at below block.
#Virtual Host setup <VirtualHost *:80> ServerName yourapp.com ServerAlias *.yourapp.com DocumentRoot "/usr/local/tomcat/webapps/yourapp" DirectoryIndex index.html <Proxy *> AddDefaultCharset Off Order deny,allow Allow from All </Proxy> ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ </VirtualHost>
Tomcat configurationIn Tomcat 6 we have to do some changes as well. All changes are done in the server.xml file.
nano /usr/local/tomcat/conf/server.xmlThe first line might already be in your file. Please check this and in case only add the missing parameters, like enableLookups="false". This line will enable the AJP connections to the 8009 port of your tomcat 6 server.
<Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443" />Add this inbetween the
<Host name="yourapp.com" debug="0" appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true"> <Alias>wiki</Alias> <Context path= "" docBase="/usr/local/tomcat/webapps/yourapp" debug=”1″/> <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”home_access_log.” suffix=”.txt” pattern=”common” resolveHosts=”false”/> </Host>
Now if you point your domain(yourdomain.com) to the IP of the server Apache should do the rest and Tomcat should serve you the web app.
Restart Apache and TomcatRestart Apache:
/etc/init.d/apache2 restartRestart Tomcat: