在 Rails 2.3 应用程序上,我有这个简单的代码
redirect_to resource_url(resource)
我使用 SSL 连接 (https) 发出请求,但它重定向到非 SSL 版本 (http)
我检查过,resource_url
正在抛出没有 ssl 的 http。
Rails 如何知道协议(protocol)是否为 https?我的设置使用 Nginx 和 3 个带有负载平衡器的杂种。
我想知道问题是不是我的 mongrel 实例使用了 http。
有没有办法让 mongrel 实例知道与 nginx 的连接是通过 ssl 进行的?
这真的是我的问题吗?
最佳答案
这是因为 nginx 配置了负载均衡器。基本上,浏览器与 Nginx 建立 SSL 连接,但 Nginx 通过 http 与 mongrel 实例建立内部连接,它们不知道原始连接是否通过 SSL。
解决方案是将其添加到 nginx 配置中
proxy_set_header X-Forwarded-Proto $scheme;
关于ruby-on-rails - Rails 2.3 在使用 resource_url 时没有使用正确的协议(protocol) ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31281418/