tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Brownlee" <>
Subject Passing requests from apache to tomcat with mod_jk and mod_jk2
Date Tue, 22 Apr 2003 02:38:53 GMT
Hi Folks,

Let me start by saying I'm an admin and not a Java web application 
developer.  I've been trying to find a way to have apache pass 
http://<host>/apps/<appname> requests from apache to tomcat without 
restarting either service and I think I have a working solution.  The 
problem is that I only have a couple sample web apps (which work) and I 
don't know enough about servlet programming to know if my solution 
introduces security problems or other architectural concerns.  I'll describe 
what I have and hope someone will shoot it down if I'm doing something 

I have two machines, a Solaris 2.6 host running apache 1.3.20 with mod_jk 
(soon to be upgraded) and a Red Hat 8.0 host running mod_jk2 with the apache 
2.0.40 that came in the distribution.  On both machines, I've unpacked the 
binary version of tomcat 4.1.24 in /opt and both machines have the J2SE 
1.4.1 from Sun.

The tomcat binaries worked "out of the box".  I left tomcat's default HTTP 
listener on port 8080 for testing and I added a user with the "manager" roll 
to the default tomcat-users.xml file so that I could use the tomcat manager 
web application (http://<host>:8080/manager/html/list).  Tomcat is 
configured to autodeploy web apps.  I added the address="" 
parameter to tomcat's AJP13 connector on port 8009 since apache and tomcat 
are running on the same machine.  In the httpd.conf file on the Solaris 
host, I have "JkMount /apps/* tc41" (tc41 is configured for AJP13 on in the file) which configures mod_jk to 
pass requests with URLs starting with /apps/ to tomcat whether or not tomcat 
will know what to do them.  On the Linux host, my 
/etc/httpd/conf/ file configures mod_jk2 in the same way 
using these lines:
info=some text here

With this configuration in place, here are the steps I have used to deploy a 
web app:
1.  Use tomcat's manager app to upload myapp.war.  At this point, I can 
access the app directly through tomcat using http://<host>:8080/myapp/.  
However,  both http://<host>:8080/apps/myapp/ and http://<host>/apps/myapp/ 
return tomcat 404 errors.  This is expected and is helpful since it shows 
that mod_jk/mod_jk2 is working.  Otherwise, the 404 (or 500) would be 
comming from apache and not tomcat.
2.  Create myapp.xml in tomcat's webapps directory and use tomcat's manager 
app to install it.  The myapp.xml file contains the following:
<Context path="/apps/myapp" docBase="myapp" debug="0" 
At this point, tomcat's manager app shows both /myapp and /apps/myapp are 
available and following the links shows that both are accessible directly 
through tomcat.  Also, since apache is passing anything begining with /apps/ 
to tomcat, http://<host>/apps/myapp/ also works but http://<host>/myapp/ 
returns a 404 from apache as you would expect.

This setup seems to work and meets my admin requirements.  However, since 
I'm not a Java web application developer, I can not tell if there is 
something "wrong" or "non-standard" about this setup from the web 
application's perspective.  Please tell me if I have destroyed the web app 
paradigm, broken web application security or done something else that will 
cause my web developers to curse my name.

The new MSN 8: smart spam protection and 2 months FREE*

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message