当作为Sinatra应用程序的SSL反向代理服务器时,NginX会丢弃会话数据

我几乎卡在这一点上。 我有一个网站,在8080端口上使用Padrino(A sinatra变种)服务于Mizuno(我认为是Jetty变种),Nginx在80/443监听,允许SSL代理。

该网站有一个login墙,用户login,然后被允许访问该网站之前,挑战。 每当我通过端口8080直接访问它,一切都按预期工作,但是,当我通过Nginx的时候,我只能到达挑战页面。 当我尝试将我的回应发布到挑战时,它会将我踢回login页面。

编辑:此外,当我login时,应用程序事实上login我正确。 如果我尝试通过端口8080直接访问下一页,在通过nginx启动后,它允许访问。

我的nginxconfiguration如下

server { listen 443; server_name secure.website.io; ssl_certificate ssl-bundle.crt; ssl_certificate_key website.key; ssl on; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; ssl_prefer_server_ciphers on; location / { proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_pass http://127.0.0.1:8080; } } server { listen 80; server_name secure.website.io; rewrite ^ https://$server_name$request_uri? permanent; } 

我在这里错过了什么?

我find了一个解决方法。 通过为Phusion Passenger换出Mizuno,我能够完全从混合中删除nginx,并使用Passenger的configuration选项提供SSL证书。