Newbie question on ip_hash

Maxim Dounin mdounin at
Wed Feb 6 16:47:22 UTC 2013


On Tue, Feb 05, 2013 at 10:38:35AM -0500, WBrown at wrote:

> Why does ip_hash only use the first 3 octects of the IP address?
> The reason I ask is that we run we servers for a number of schools.  Each 
> school is going the be their own subnet, ranging from a /24 to a /20 in 
> size.  Since ip_hash will lump everyone from a /24 in the same hash, it 
> will direct them to the same server, correct?


The ip_hash balancing was designed to work with internet services, 
and use of /24 networks allows it to keep users from migrating 
between backend servers as they get new IP address on 
reconnect/reboot (typically from the same /24 network, at least at 
the time ip_hash was introduced) while still providing good 
distribution between backend servers.  This probably isn't very 
useful nowadays, but this is how it works.

> If I am correct above, is there any way to create persistent connections 
> based on the full IPv4 address? 

There is a number of 3rd party modules available which do hash 
calculation based on arbitrary variables, and these may be used if 
you need a hash based on full client's IPv4 address (there is 
$remote_addr variable).

Maxim Dounin

More information about the nginx mailing list