tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier>
Subject Re: [OT] Using httpd's mod_rewrite with mod_jk
Date Fri, 02 Jul 2010 08:08:47 GMT
Christopher Schultz wrote:
> Hash: SHA1
> Rainer,
> On 7/1/2010 4:54 AM, Rainer Jung wrote:
>> Usually mod_rewrite is perfectly compatible with mod_jk. I must confess,
>> that I'm not 100% sure about the case, where you try to rewrite a
>> request that originally would have been handled by mod_jk to something
>> that should not be handled by it.
> It appears that my setup (rewriting a request that normally would go to
> jk to one that shouldn't go to jk) still ends up being handled by jk.


I personally find it hard to "visualise" when exactly in the Apache request handling cycle

the JkMount directive intervenes.  Like, /before RewriteRule/ or /after RewriteRule/.
I am sure that it is at a very specific place in the cycle and with a very specific 
precedence, but neither the Apache httpd nor the mod_jk documentation explicitly indicate

this (*).  (Unlike, for example, in this page, where the precedence is clear :
And if even Rainer isn't sure..

That is why, with Apache/mod_jk, I tend to prefer working with the alternative to JkMount

explained here (at the very end of the page) :
(section: Using SetHandler and Environment Variables)

To me, this makes it clearer, because the "proxying to Tomcat" is now embedded in a 
<Location> section, which has a clear precedence in the Apache configuration logic.

Using that syntax, the directives

 >    JkMount /context/some-specific-path/foo workerX
 >    JkMount /context/some-other-path/bar workerX
 >    JkMount /context/*.do workerX
 >    JkMount /context/*.jsp workerX

would be expressed as

<Location /context/some-specific-path>
   # covers the 1st one above
   setHandler jakarta-servlet
   SetEnv JK_WORKER_NAME workerX
   # but, as an example, exclude some URLs from the proxying
   SetEnvIf REQUEST_URI "\.(css|gif|jpe?g|js)$" no-jk
<LocationMatch "/context/.*\.(do|jsp)$">
   # covers #3 and #4 above
   setHandler jakarta-servlet
   SetEnv JK_WORKER_NAME workerX

Now, the problem becomes : are these Location and LocationMatch sections evaluated before,

or after the Rewrite rules ?
But for that, the Apache documentation is explicit.
Rewrite happens *before* the URL is compared to the <Location*> sections.

(*) probably, because it is difficult to explain precisely in less than 2 pages of html 
full of Apache internals which most users would not understand anyway, so Rainer is 
discouraged from even attempting to... ;-)

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

View raw message