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;
}
}