httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Norman Khine <nor...@khine.net>
Subject Re: [users@httpd] Dynamic RewriteRule based on the URL
Date Thu, 07 Sep 2006 15:26:03 GMT
Arjun Datta wrote:
> Hi Folks,
>
> Simple question,
>
> I was reading the documentation for mod_proxy module in version 2.2 on the
> apache.org website and I was a little confused by the difference between
> forward and reverse proxies.
>
> My understanding:
> Forward returns the addresses and reverse (default) returns the content.  Is
> this true ?
>
> Regards,
> Arjun
>
> -----Original Message-----
> From: jslive@gmail.com [mailto:jslive@gmail.com]On Behalf Of Joshua
> Slive
> Sent: Thursday, September 07, 2006 9:36 AM
> To: users@httpd.apache.org
> Subject: Re: [users@httpd] Dynamic RewriteRule based on the URL
>
>
> On 9/7/06, Norman Khine <norman@khine.net> wrote:
>
>   
>> [1] <VirtualHost *:80>
>>
>> [2]    ServerName  domain.tld
>> [3]    RewriteEngine on
>> [4]    RewriteCond   %{*HTTP_HOST*}    *[^.]+*\.domain\.tld$
>> [5]    RewriteRule   ^(.+)             %{HTTP_HOST}$1
>>     
> [C]
>   
>> [6]    RewriteRule   *([^.]+)*\.domain\.tld(.*)
>>     
> http://localhost:9080/*$1*$2 [P]
>   
>> [7]    RequestHeader set X-Base-Path %{*HTTP_HOST*}
>>
>> [8]    ErrorLog       /var/log/apache2/all-error_log
>> [9]    CustomLog      /var/log/apache2/all-access_log common
>>
>> [0] </VirtualHost>
>>
>>
>> I don't understand line [2], as the server gets the request
>>     
> http://folder.domain.tld as this points to an A record IP address Apache
> will return the default page and it stops, how do I inject the
> %{*HTTP_HOST*} value or is there some magic I am missing and don't see?
>   
>> Assuming that there is, Apache then switches the RewriteEngine on [3] and
>>     
> takes everything before domain.tld - what is the meaning of [^.]+ ? then the
> [C] means continue to the next RewriteRule which in my case needs to rewrite
> to an internal server and Proxy this i.e. [P], but this does not work for me
> either ;'(
>   
>> Line [7] I need to set the X-Base-Path to the folder name.
>>
>> I would like to avoid using vhost.map or any scripting but I am open to
>>     
> suggestions if there is no other way ;)
>   
>> By the way, I don't have the www.'folder'.domain.tld in my URL - maybe
>>     
> this is the problem, but don't see why?
>
> I don't understand that last line.  But here is something that should be
> closer:
> <VirtualHost *:80>
> ServerName  domain.tld
> ServerAlias *.domain.tld
> RewriteEngine on
> RewriteCond   %{HTTP_HOST}    ^([a-zA-Z_]+\.domain\.tld)$
> RewriteRule (.+) http://localhost:9080/%1$1 [P,E=THEHOST:%1]
>
> RequestHeader set X-Base-Path %{THEHOST}e
> ErrorLog       /var/log/apache2/all-error_log
> CustomLog      /var/log/apache2/all-access_log common
> </VirtualHost>
>
> I don't know if this will work, but it is closer than what you have.
> A few notes:
> 1. My regex matching the HOST is more strict to avoid clients playing
> funny games with their host header and causing security problems.  It
> accepts only hostnames containing letters and the underscore
> character.
> 2. In the RewriteRule %1 matches the regex from the RewriteCond and $1
> matches the regex from the RewriteRule.
> 3. The funky stuff with THEHOST is necessary because the RequestHeader
> directive cannot access mod_rewrite variables.  So I instead have
> mod_rewrite shove HTTP_HOST in an environment variable.
>
> One more note: I'm not actually sure whether RequestHeader can use env
> variables at all.  You'd need to check the code to be sure.
>
> Joshua.
>
> ---------------------------------------------------------------------
> The official User-To-User support forum of the Apache HTTP Server Project.
> See <URL:http://httpd.apache.org/userslist.html> for more info.
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>    "   from the digest: users-digest-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>
> ---------------------------------------------------------------------
> The official User-To-User support forum of the Apache HTTP Server Project.
> See <URL:http://httpd.apache.org/userslist.html> for more info.
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>    "   from the digest: users-digest-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>   
Hi,
here is a good explanation of the differences.

http://apache.active-venture.com/mod/mod_proxy2.html

Cheers

Norman

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message