Nginx – Session persistence between multiple Rails / Unicorn servers with Redis as session_store on AWS

amazon ec2nginxredisruby-on-railsunicorn

I've got 2 nginx EC2 instances pointing to 2 Unicorn EC2 instances in a round robin load balanced configuration. The two nginx instances are being the Elastic Load Balancer.

Both Unicorn instances have a Redis session_store configured which is in a master/slave configuration with an Elastic IP attached to the master.

I've tried configuring the session stickiness on the load balancer, but sessions are lost on each page refresh.

I'm using the redis-store gem for the session_store configuration and redis support.

Anyone have any ideas as to why this is not working?

Best Answer

I figured it out. In the location section of the nginx configuration file, I had to add two additional proxy parameters:

proxy_next_upstream     error timeout invalid_header http_500;
proxy_connect_timeout   2;