Hi, I have a problem with login to my application. I use nginx as load-balancer and mongrel cluster as application servers. I have 2 servers and 8 mongrels per server. When I try to login directly on mongrel, everything is ok. But if I use to login nginx, login sometimes failed - login and password are nil in admin_controller and authentication failed in this case.
Do you have some idea to find solution of my problem? Thanks... Chuck
nginx.conf :
#user and group to run as user yeti yeti;
worker_processes 4;
pid /var/run/nginx.pid;
events { worker_connections 8192; use epoll; # linux only! }
http { include /usr/local/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' ; access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log notice;
sendfile on;
tcp_nopush on; tcp_nodelay on;
client_body_temp_path /tmp 1 2;
gzip on; gzip_http_version 1.0; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/css application/x-javascript application/xml application/xml+rss text/javascript;
# nginx virtual host configuration file # to be included by nginx.conf # Load balance to mongrels upstream mongrel_cluster { server server1:3000; server server1:3001; ... server server1:3007;
server server2:3000; server server2:3001; ... server server2:3007;
}
# Begin virtual host configuration server { # Familiar HTTP settings listen 443;
ssl on;
ssl_certificate /usr/local/nginx/certs/server.crt;
ssl_certificate_key /usr/local/nginx/certs/server.key;
server_name localhost; root /home/usr/app/current/public; access_log /var/log/nginx/localhost.access.log main; error_page 500 502 503 504 /500.html; client_max_body_size 50M;
# First rewrite rule for handling maintenance page if (-f $document_root/system/maintenance.html) { rewrite ^(.*)$ /system/maintenance.html last; break; }
location / {
proxy_set_header X-FORWARDED_PROTO https;
index index.html index.htm; # Forward information about the client and host # Otherwise our Rails app wouldn't have access to it proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_max_temp_file_size 0; # Directly serve static content location ~ ^/(images|javascripts|stylesheets)/ { expires 10y; } if (-f $request_filename) { break; } # Directly serve cached pages if (-f $request_filename.html) { rewrite (.*) $1.html break; } # Otherwise let Mongrel handle the request if (!-f $request_filename) { proxy_pass http://mongrel_cluster; break; } } } }