Re: Apache mod_rewrite/mod_proxy conflict?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



pdt_p wrote:
> Hi...
> 
> from this solution:
> RewriteRule ^/testing/(.*)$ http://myserverB/$1 [P,L]
> RewriteRule ^/(.*)$ http://myserverA/$1 [P]
> ProxyPassReverse /testing http://myserverB/
> 
> the original server url is fixed. In this case  http://myserverB and
> http://myserverA. What if the original URL is dynamic which is passed from
> parameter?
> for example: 
>    http://<myReveseProxyHostName>/testing/myserverB/otherPath -->
> http://myserverB/otherPath
> 
> I think for RewriteRule is quite straight forward: RewriteRule
> ^/testing/(.*)$ http://$1 [P]
> but how about the ProxyPassReverse?

You really don't want to do that...  think about the following:

http://reverse.proxy/testing/www.google.com/

And any others.  Your proxy could be used to launch an attack against a
third party.

You could however use something like:

RewriteRule ^/testing/(servera|serverb|serverc)/(.*)$ http://$1/$2 [P]

Gut you'd need to add ProxyPassReverses in for all combinations!


HTH,


				Neil.

> Neil A. Hillard-2 wrote:
>> Tamer Embaby wrote:
>>> I have the following simple setup:
>>>
>>> [1] LoadModule rewrite_module modules/mod_rewrite.so
>>> [2] LoadModule proxy_module modules/mod_proxy.so
>>> [3] LoadModule proxy_http_module modules/mod_proxy_http.so
>>> [4] RewriteEngine on
>>> [5] ProxyPass /testing http://myserverB/
>>> [6] ProxyPassReverse /testing http://myserverB/
>>> [7] RewriteRule ^/(.*)$ http://myserverA/$1 [P]
>>>
>>> My problem is:
>>>
>>> When I access http://myserver/testing/index.html, it gets handled by the
>>> rewrite rule and not the proxy module.
>>>
>>> The interesting point if I changed the order of LoadModule directives
>>> so now it reads:
>>> [1] LoadModule proxy_module modules/mod_proxy.so
>>> [2] LoadModule proxy_http_module modules/mod_proxy_http.so
>>> [3] LoadModule rewrite_module modules/mod_rewrite.so
>>>
>>> The proxy module handles the request and not the rewrite module!
>>>
>>> Is this behavior documented somewhere? Where can I read about it? I
>>> tried to Google a lot with no good. How can I control it?
>>>
>>> Moreover, what if I compiled in the rewrite_mod and proxy_mod statically
>>> into Apache, how would I control the order of modules calling then?
>>>
>>> I did my home work, scanned the FAQ, Googled but I cannot come up with
>>> any technical explanation for this.
>> Simple answer - don't mix them in this way (that's what I've been doing,
>> anyway)!  Stick to mod_rewrite and you should be fine:
>>
>> RewriteRule ^/testing/(.*)$ http://myserverB/$1 [P,L]
>> RewriteRule ^/(.*)$ http://myserverA/$1 [P]
>> ProxyPassReverse /testing http://myserverB/
>>
>> You can include:
>>
>> RewriteRule      ^/testing$ /testing/ [R,L]
>>
>> before the above if you want to handle a missing trailing slash.


-- 
Neil Hillard                    neil.hillard@xxxxxxxxxxxxxxxxxx
AgustaWestland                  http://www.whl.co.uk/

Disclaimer: This message does not necessarily reflect the
            views of Westland Helicopters Ltd.

---------------------------------------------------------------------
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@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx


[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux