我有一个旧的rails 2.3应用程序,我正在转移到nginx + Passenger(来自Apache + Passenger)。 Nginx配置为SSL并且似乎正常工作,除非我从Rails应用程序中陷入302重定向循环。太多的重定向:乘客+ nginx SSLRequirement
rails应用程序认为请求不是ssl(request.ssl?必须评估为false)。在production.log中,每个日志条目都将请求显示为http。如果我禁用SSLRequirement插件,那么重定向循环会消失。但是,我想确保我的Rails应用程序检测到https请求,以便在创建绝对URL时正确设置协议。
我提到之前的Apache + Passenger设置的唯一原因是SSLRequirement插件在该配置下正常运行。
nginx的配置我的虚拟主机看起来像这样:
server {
listen 443 ssl;
server_name new.example.com;
root /home/user/railsapps/example-setup/public;
passenger_enabled on;
ssl_certificate /etc/nginx/ssl/2013/example.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/2013/example.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
这是不相关到你的问题,但你似乎不设置任何标准的代理标题例如“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;”不设置它们可能会产生“令人兴奋”的行为。 – Danack