Hi Oskar, On Sun, May 13, 2012 at 11:34:04AM +0100, Oskar Stolc wrote: > Hi, > > > I have 3 backend servers, each accepting different form of HTTP queries: > > http://backend1.server.tld/service1.php?q=... > http://backend1.server.tld/service2.php?q=... > > http://backend2.server.tld/index.php?query=...&subquery=... > > http://backend3.server.tld/image/49b8c0d9ff > > Each backend server returns a different response based on either: > - the URI path (the left part of the URI before the question mark) > - the query string (the right part of the URI after the question mark) > - or the combination of both > > I wanted to set up a common caching cluster (using 6 Squid servers, each > configured as reverse proxy for those 3 backends) and have HAProxy balance > the queries among the Squid servers based on URL. I also wanted to achieve > hight cache hit ration on each Squid server and send the same queries to > the same Squid servers. Initially I was considering using the 'balance uri' > algorithm, but that would not work as in case of backend2 all queries would > go to only one Squid server. The 'balance url_param' would not work either > as it would send the backend3 queries to only one Squid server. > > So I thought the simplest solution would be to use 'balance uri', but to > calculate the hash based on the whole URI (URI path + query string), > instead of just the URI path. So I added a new "withquerystring" parameter > for the 'balance uri' algorithm which does exactly what I just described.
I agree with the principle. However I'd rather use a shorter option name such as "whole". I don't intend to add new features to 1.4 at the moment, but I'll release 1.5-dev10 today, so if you want to rebase it on 1.5-dev9, I'll happily include it in todays release. Thanks, Willy

