Load balancing based on hash of the domain

Hi all,

I wish to use load balancing in front of a shared webhosting cluster
with multiple domains.
To make optimal use of resources, it would make sense to do load
balancing based on domain instead of random or based on IP.
I noticed that there is a hash parameter but I’m unable to use
$server_name or $host as a parameter, only $request_uri and
$remote_addr.

Is there any way that I could use $server_name?

In my opinion it makes no sense to randomize all requests for the
different domains and would make sense to load balance based on a hash
of the domain.

Regards,

Bram

On Tuesday 15 December 2015 10:13:35 Bram Verdonck wrote:

What’s the problem with the “hash” directive of upstream block?
Why can’t you use it?

http://nginx.org/r/hash

wbr, Valentin V. Bartenev

Problem is that it will not accept anything besides $remote_addr and
$request_uri.
For example:

upstream loadbalancer {
    hash $server_name consistent:
    #hash $request_uri consistent;
    server 10.0.0.1:8080;
    server 10.0.0.2:8080;
}

Will fail with:

invalid number of arguments in “hash” directive in
/etc/nginx/nginx-loadbalancing.conf:6

On Tue, Dec 15, 2015 at 11:56:43AM +0100, Bram wrote:

Hi there,

Problem is that it will not accept anything besides $remote_addr and
$request_uri.
For example:

upstream loadbalancer {
    hash $server_name consistent:

Use ; not :

    #hash $request_uri consistent;
    server 10.0.0.1:8080;

Line 6 is probably that one, because that is where the “hash” directive
terminates.

    server 10.0.0.2:8080;
}

Will fail with:

invalid number of arguments in “hash” directive in
/etc/nginx/nginx-loadbalancing.conf:6

f

Francis D. [email protected]

On Tuesday 15 December 2015 11:56:43 Bram wrote:

Problem is that it will not accept anything besides $remote_addr and
$request_uri.
For example:

upstream loadbalancer {
    hash $server_name consistent:

There’s a typo: you’ve used a colon at the end of the directive.

wbr, Valentin V. Bartenev

Wow, was struggling with that for a week already.
Can’t believe that was it.

Thank you Valentin and Francis!