我有一个旧的 rails 2.3 应用程序,我正在迁移到 nginx+Passenger(来自 Apache+Passenger)。Nginx 已针对 SSL 进行了配置,并且似乎运行正常,但我在 Rails 应用程序中陷入了 302 重定向循环。
rails 应用程序认为请求不是 ssl(request.ssl?必须评估为假)。在 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;
}