On Thu, Feb 03, 2011 at 11:00:25PM +0000, Igor Gali?? wrote: > ----- dfw-apache@xxxxxxxxxxxxxxx wrote: > > I've hit a vexing impasse with mod_proxy_balancer. > > > > I have a pool of backend boxes. They vhost many domains, so > > need the specific Host: header in requests to them (the *same* > > Host: header for all of them) > > > > I proxy requests to them potentially thousands of times a second, > > and their IP's are not going to be changing, so I name the > > BalancerMembers by IP address, as the DNS lookup overhead is > > a fatal waste of CPU, especially if your DNS servers melt > > and your site dies unnecessarily. (No, /etc/hosts is not possible. > > http://httpd.apache.org/docs/current/mod/mod_proxy.html#startup That only mentions ProxyBlock. We do not use ProxyBlock. Also, when we lost DNS, we lost the site, so reality has the last word regardless. > > The sitename has multiple A records, and I make the backends choose > > individualiseable vhosts. Besides, my hosts file is vast!) > > > > Unfortunately, when I try and use mod_headers to set the Host: header > > for these backend connections, the balancer layer destroys the > > result and replaces it with the IP. > > > > Apparently, if I switch ProxyPreserveHost on, I may get further, > > but since that's a site-wide setting a side effect would mean all > > Not quite sure what you mean by site-wide, but: > http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypreservehost > says: Context: server config, virtual host It does. Our site is a vhost. It has squillions of proxypasses to squillions of different backend boxes run by squillions of different people. I want to add another backend without breaking all of the other ones. > > of my other proxied directories would now get the wrong Host: header. > > All the RewriteRule [P]'s would break and I would have to catch and > > Waaaait a sec. > You're using mod_rewrite for proxying? > Why? (http://bash.org/?866112) Because I'm rewriting the URL, and then proxying it? Because I'm using rewritemaps? Because I like the letter P? Pick one :) Also, this problem is only using ProxyPass, so mod_rewrite is not the problem here. > > replace the Host in every single one of them in individual <Proxy> > > blocks. > > That deluge of perpetual kludgery does not appeal. > > > > What I need is a way to tell a ProxyPass or BalancerMember, that > > they should use a certain Host: header in its communications > > with this backend. e.g. > > BalancerMember http://10.0.0.1/foo/ host=foobar.com > > Now I'm confused. How do your configs actually look like? ProxyPreserveHost Off ProxyPass /foo/ balancer://www.mybackend1.net/ <Proxy balancer://www.mybackend1.net > ProxySet lbmethod=bybusyness timeout=10 BalancerMember http://192.168.0.1 lbset=0 retry=0 ttl=5 BalancerMember http://10.0.0.1 lbset=1 retry=0 ttl=5 </Proxy> <Proxy http://192.168.0.1> RequestHeader set Host www.mybackend1.net </Proxy> <Proxy http://10.0.0.1> RequestHeader set Host www.mybackend1.net </Proxy> ProxyPass /bar/ http://www.mybackend2.net/ ProxyPass /bar1/ http://www.mybackend3.net/ ProxyPass /bar2/ http://www.mybackend4.net/ ... 192.168.0.1 receives 'Host: 192.168.0.1', not the 'Host: www.mybackend1.net' I want it to. www.mybackend2.net receives 'Host: www.mybackend2.net' and I want to keep it that way. > > The logical alternative would have been to be able to specify a > > certain target IP to connect to instead of a certain Host name > > to use e.g. > > BalancerMember http://foobar.com/foo/ address=10.0.0.1 > > > > but I suspect apache would then be unable to set <Proxy> block > > rules for individual balancer members since they'd all declare > > the same URL and you'd be unable to match them individually > > You can use ProxySet > http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyset > in <Proxy > and <BalancerMember > > > But ProxySet only allows you to set the same Variables as > ProxyPass does. host is none of them. Indeed. This appears to be the problem. Such an option is missing. DFW --------------------------------------------------------------------- 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