httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject Re: [PATCH] Fix settings options with ProxyPassMatch
Date Tue, 29 Apr 2014 13:51:19 GMT

On Apr 29, 2014, at 8:41 AM, Jan Kalu┼ża <jkaluza@redhat.com> wrote:
> 
> Because later we have to match the URL of request with some proxy_worker.
> 
> If you configure ProxyPassMatch like this:
> ProxyPassMatch ^/test/(\d+)/foo.jpg http://x/$1/foo.jpg
> 
> Then the proxy_worker name would be "http://x/$1/foo.jpg".
> 
> If you receive request with URL "http://x/something/foo.jpg", ap_proxy_get_worker() will
have to find out the worker with name "http://x/$1/foo.jpg". The question here is how it would
do that?
> 
> The answer used in the patch is "we change the worker name to http://x/*/foo.jpg" and
check if the URL ("http://x/something/foo.jpg" in our case) matches that worker.
> 
> If we store the original name with $N, we will have to find out different way how to
match the worker (probably emulating wildcard pattern matching)
> 
> It would be possible to store only the original name (with "$N" variables), store the
flag that the proxy worker is using regex and change ap_proxy_strcmp_ematch() function to
treat "$N" as "*", but I don't see any real advantage here.
> 

In Yann's suggested patch we don't store match_name where it
belongs; so we'd need to put it in shm, which means more
memory. Instead, we store as is and add a simple char flag
which sez if the stored name is a regex. Much savings.

And I have no idea why storing with $1 -> * somehow makes
things easier or implies a "different way how to match the worker".

Finally, let's think about this deeper...

Assume we do have

	ProxyPassMatch ^/test/(\d+)/foo.jpg http://x/$1/foo.jpg
	ProxyPassMatch ^/zippy/(\d+)/bar.jpg http://x/$1/omar/propjoe.gif

is the intent/desire to have 2 workers or 1? A worker is, in
some ways, simply a nickname for the socket related to a host and port.
Maybe, in the interests of efficiency and speed, since regexes
are slow as it is, a condition could be specified (a limitation,
as it were), that when using PPM, only everything up to
the 1st potential substitution is considered a unique worker.
Mime
View raw message