Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Apache Tomcat »

Re: URL rewriting with mod_rewrite and mod_jk possible?

Rainer Jung

2006-12-29

Replies:

You can experiment with the following alternative way of defining JkMount:

If you want to forward a certain request via mod_jk wo a worker X, you
can do that by setting:

SetHandler jakarta-servlet
SetEnv JK_WORKER_NAME X

Now you can vary this by using SetEnvIf instead of SetEnv to make it
dependant on runtime info, such as the request URL.

Furthermore mod_rewrite can set environment variables depending on parts
of matches regular expressions.

So something like setting

SetHandler jakarta-servlet

inside <Location /rimNGit/> and inside <Location /rimNGit-tomcat2/>

and using mod_rewrite to set the environment variable JK_WORKER_NAME to
"tomcat1" if the URL is /rimNGit/ and to "worker2" if it is
/rimNGit-tomcat2/ (and of course rewriting the URL itself) should work.

Caution: Don't mix mapping via JkMount and via SetHandler/Environment
for the same URLs. It might lead to unexpected results :)

If you don't like the name of the environment variable JK_WORKER_NAME,
you can change it via

JkWorkerIndicator MyPrefferedVarName

Some of this is explained in

http://tomcat.apache.org/connectors-doc/reference/apache.html

(look for "JkWorkerIndicator"")

Regards,

Rainer

JasDA@(protected):
> Hi,
>
> I'm using a Tomcat 5.5.20 and an Apache 2.x. Using the mod_jk special request will be passed through the Tomcat. But now I have a problem with two Tomcat instances and the same context (the name is equal) in these instances.
>
> Here is my workers.properties:
>
> ps=\ worker.list=tomcat1, tomcat2
>
> worker.tomcat1.port=8009
> worker.tomcat1.host=localhost
> worker.tomcat1.type=ajp13
>
> worker.tomcat2.port=9009
> worker.tomcat2.host=localhost
> worker.tomcat2.type=ajp13
>
>
> And here is my jk.conf
>
> <IfModule mod_jk.c>
> JkWorkersFile /etc/apache2/workers.properties
> JkLogFile /var/log/apache2/mod_jk.log
>
> # Log level to be used by mod_jk
> JkLogLevel error
>
> # The following line mounts all JSP files and the /servlet/ uri to tomcat
> JkMount /rimNG/* tomcat1
> JkMount /rimNGj/* tomcat1
> JkMount /rimNGuk/* tomcat1
> JkMount /rimNGit/* tomcat2
> </IfModule>
>
> As you can see all rimNGit-URLs will be passed through tomcat2. Now I want to create a new URL (for example "rimNGit-tomcat2") that should be passed as "rimNGit" through tomcat2. At the same time all "rimNGit" request should be passed through tomcat1. Is that possible?
>
> If I'm using mod_rewrite I could change the URL to rimNGit but in that case all requests would be passed through tomcat1 instead of tomcat2, am I right?
>
> Regards
> JasDA
> _______________________________________________________________________
> Viren-Scan f?r Ihren PC! Jetzt f?r jeden. Sofort, online und kostenlos.
> Gleich testen! http://www.pc-sicherheit.web.de/freescan/?mc=022222
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@(protected)
> To unsubscribe, e-mail: users-unsubscribe@(protected)
> For additional commands, e-mail: users-help@(protected)

---------------------------------------------------------------------
To start a new topic, e-mail: users@(protected)
To unsubscribe, e-mail: users-unsubscribe@(protected)
For additional commands, e-mail: users-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.