session persistance with IP hash

Reinis Rozitis r at roze.lv
Wed Jul 27 20:44:00 UTC 2016


> My understanding is that the ip_hash directive is responsible for session 
> persistence. My questions are:
> 1) How long does it last? For example, if I connect and my ip hash tells 
> nginx to connect to backend3, will my source IP be forever tied to backend 
> 3?

If your IP doesn't change and all the servers are up, you will most likely 
always land on the same backend server.
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash


> 2) Is there another way to acheive session persistence other than ip hash 
> and other than purchasing plus edition?

Yes, you can use different hash mechanisms/keys (for example specific 
cookies etc):
https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#hash

There are also some third-party sticky cookie modules.


I personally preffer to use centralised cache storage (memcache/redis etc) 
so it doesn't matter on which server the user lands and they can be used in 
roundrobin fashion.


> 3) Is there an ip hash "cache" or something I can clean out periodically 
> to force the source IP to get a new hash and therefore a chance to connect 
> to a different server?

The standard nginx hash mechanisms don't have any inbuilt "cache". In case 
of ip_hash you can change the upstream server order (though it will swap 
arround all the users not only particular remote addr).

rr 



More information about the nginx mailing list