在rails 2.3应用程序中,我有这个简单的代码
redirect_to resource_url(resource)
我使用SSL连接(https)发出请求,但重定向到非SSL版本(http)
我检查过,resource_url
正在抛出没有ssl的http。
Rails如何知道协议是否为https?我的设置使用Nginx和3个mongrel与负载平衡器。
我想知道问题是我的mongrel实例是否使用http。
有没有办法让mongrel实例知道与nginx的连接是否与ssl有关?
这真的是我的问题吗?
答案 0 :(得分:0)
这是因为nginx配置了负载均衡器。基本上浏览器与Nginx建立SSL连接,但是nginx通过http与mongrel实例建立内部连接,并且他们不知道原始连接是否通过SSL。
解决方案是将此添加到nginx配置
proxy_set_header X-Forwarded-Proto $scheme;