I've set up NGINX to load-balance requests to my web app. One front end server passes requests to two backend servers. All works fine.
However, I have been using the ip_hash directive to ensure users are served by the same server each time. This doesn't seem to be working - requests alternate between the two backend servers, and this is causing problems with user sessions.
The config should be quite simple, so I don't know where this is going wrong - any ideas appreciated.
upstream webservers { ip_hash; server node1.mysite.com; server node2.mysite.com; server localhost:8080 backup; } server { listen 80; server_name www.mysite.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://webservers; } }