Rainer,

On Mon, Mar 2, 2009 at 12:29 PM, Rainer Jung <rainer.j...@kippdata.de> wrote:
> On 02.03.2009 03:21, Andres Riancho wrote:
>>
>> List,
>>
>>     I've search the Tomcat FAQ, but I haven't been able to find any
>> answers, so... here is my question... I have a JSP application
>> deployed in Tomcat inside the "/abc/" directory; and I want to be able
>> to access it from *two different locations* from Apache, for example,
>> when I access: "http://apache/abc/"; and "http://apache/123/abc/";. The
>> first JkMount is trivial:
>>
>>         JkMount /abc ajp13_worker
>>         JkMount /abc/* ajp13_worker
>>
>>     And is working as expected, but for the second... I don't have the
>> slightest clue on how to do it... I tried mod_rewrite, but it seems
>> that it isn't possible to combine JkMount's and URL rewrites in a
>> successful way. Could anyone point me in the right direction? Thanks!
>>
>>     I'm using Apache2, Tomcat6.
>
> I'll give an answer for Apache 2.2 and yes, this is missing in the
> documentation at the moment. For IIS there is a builtin rewrite feature in
> mod_jk, but not for httpd, because httpd can already do it on its own.
>
> Context rewriting for mod_jk and Apache httpd
> =============================================
>
> Tested with httpd 2.2.11.
>
> You need to handle three things:
>
> 1) Rewrite the URL /xxx/something to /yyy/something before the request gets
> send to Tomcat
>
> 2) Change any redirects you get back from Tomcat, which point to locations
> /yyy/somethingelse, into location /xxx/somethingelse
>
> 3) Change pathes of cookies, which might get set by the application from
> /yyy to /xxx.
>
> The module mod_proxy allow sto do this via ProxyPass, ProxyPassReverse and
> ProxyPassReverseCookiePath directives. But you can't use mod_proxy and
> mod_jk for the same requests.
>
> The first directive can be replaced by some RewriteRule, the other two cases
> will be handled by dynamically changing response headers.
>
> So lets start with
>
> JkMount /yyy/* myworker
>
> and now:
>
> ad 1) RewriteRule ^/xxx/(.*)$ /yyy/$1 [PT]
>
> This will change any rquest /xxx/something into /yyy/something before
> passing it to mod_jk.
>
> ad 2) Header edit Location ^([^/]*//[^/]*)?/yyy/(.*)$ $1/xxx/$2
>
> This changes Location headers, the headers used for signalling a redirect to
> the client.
>
> Any URL of the form "protocol://server:port/yyy/something" will be changed
> (yyy -> xxx), as well as URLs of the form "/yyy/something".
>
> Happy regular expression studying.
>
> ad 3) Header edit Set-Cookie "^(.*; Path=)/yyy([/;].*)?$" $1/xxx$2
>
> This changes Set-Cookie headers, the headers used for setting a cookie.
>
> I hope you get the idea.

I got the idea, and I was able to successfully implement it. I was
going in the right direction with the RewriteRule stuff, I actually
wrote something like:

RewriteRule ^/xxx/(.*)$ /yyy/$1

Myself, but the *most important* thing, that allows you to rewrite and
use mod_jk is the [PT] flags for the rule!

RewriteRule ^/xxx/(.*)$ /yyy/$1 [PT]


> In case your webapp puts self referential links into he response pages
> themselves, things get more complicated (or say: more expensive in terms of
> CPU cycles). Then you must parse the complete response pages to do search
> and replace. You can do that e.g. with mod_substitute or mod_sed or
> mod_proxy_html.
>
> It seems it would be nice, mod_jk had short hand notations for 1)-3). You
> can file an enhancement request in bugzilla for this, if you like.

Yes, I truly think that mod_jk needs to address this on its own.

Thank you very much for your help,

Cheers,

> Regards,
>
> Rainer
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>



-- 
Andrés Riancho
http://www.bonsai-sec.com/
http://w3af.sourceforge.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to