httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bjørn Stabell <bj...@exoweb.net>
Subject Re: Bug in rewrite or proxy?
Date Sat, 08 Apr 2006 20:07:15 GMT
On Apr 9, 2006, at 03:34, Ruediger Pluem wrote:
> As I investigated this one thing came up to my mind:
>
> If you use the proxy in the way described above the '*' worker will  
> be used which
> will be created automatically. Having the generic '*' available is  
> a good thing, BUT
> this is not optimal from the performance point of view in these  
> situations as the '*'
> worker has changing remote addresses and thus does not benefit from  
> keepalives to the
> backend as much as it could. OTOH ProxyPass which creates explicit  
> workers does not
> know regular expressions and is not well suited for more complex  
> situations. The only
> other way to create a worker for a defined target is to add a  
> BalancerMember to a
> balanced backend.
> So what about adding a directive called ProxyAddWorker that just  
> defines a worker?
> This would enable the following configuration:
>
>      Listen 192.168.100.22:80
>
>      ProxyAddWorker http://192.168.100.66:8099/ max=10
>      ProxyAddWorker http://127.0.0.1:8080/ max=20
>
>      <VirtualHost 192.168.100.22:80>
>              ServerName www.domain.com
>
>              RewriteEngine On
>             RewriteRule ^/external/(.*)       http:// 
> 192.168.100.66:8099/$1 [P]
>              RewriteRule  ^/(.*)            http://127.0.0.1:8080/ 
> $1 [P]
>      </VirtualHost>
>
> Of course ProxyAddWorker should not be mandatory. If the worker is  
> not defined
> the '*' worker should still be used.

You can get the same effect by using BalancerMember, right?

	RewriteRule ^/external/(.*)		balancer://external/$1 [P]
	RewriteRule  ^/(.*)			balancer://main/$1 [P]

	<Proxy balancer://external>
		BalancerMember		http://192.168.100.66:8099/	max=10
	</Proxy>
	<Proxy balancer://main>
		BalancerMember		http://127.0.0.1:8080/$1	max=20
	</Proxy>

This is probably good enough, and it's also more flexible in that I  
could have multiple workers for one proxy destination (maybe to  
different web apps at different URIs on the same server) with  
different settings.

It might be good to change the names of these, though, e.g.,  
BalancerMember -> ProxyWorker, and perhaps Proxy -> ProxySet, so they  
don't sound so "load-balancer" loaded (pun intended). :)  (Then  
balancer maybe should be proxy or set as well.)

I think a more important new feature would be to make 'max' be the  
absolute max number of requests Apache will make to backends, not  
just the max per process.  It's quite confusing the way it is : 
(   (But I understand you mentioned this is a difficult change.)

Btw, Ruediger, if you ever happen to come by Beijing (where I'm now),  
beers are on me for as long as you like :)

Rgds,
Bjorn

Mime
View raw message