gpt4 book ai didi

ssl - nginx + SslRequirement + mongrel cluster = 无限重定向循环

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:20 25 4
gpt4 key购买 nike

在我的站点添加 SSL 支持后,我遇到了无限重定向循环。我正在使用“SslRequirement”插件。

我看到的症状是,任何启用了“ssl_required”的操作,以及我手动输入的任何前面有 https 的 URL,都会进入无限循环,在 development.log 文件中有以下内容,一遍又一遍,直到浏览器捕捉到重定向循环并停止加载页面(“/admins/index”是此示例中的操作,但它会发生在任何操作中):

Processing AdminsController#index (for 127.0.0.1 at 2010-08-13 13:50:16) [GET]
Parameters: {"action"=>"index", "controller"=>"admins"}
Redirected to https://localhost/admins
Filter chain halted as [:ensure_proper_protocol] rendered_or_redirected.
Completed in 0ms (DB: 0) | 302 Found [http://localhost/admins]

起初我以为我必须将我的所有操作设置为“ssl_allowed”,所以我尝试了,但没有成功。

如果我删除了 SslRequirement 的使用,并删除了任何“ssl_required/ssl_allowed”引用,那么 https 可以正常工作 - 所以问题似乎是从 http 到 https 的操作重定向。

有什么线索吗?

最佳答案

答案在这里:

http://www.hostingrails.com/SSL-Redirecting-not-working

简短的版本是,我将以下行添加到我的 nginx 配置中的 SSL 虚拟主机:

proxy_set_header X_FORWARDED_PROTO https;


详细版本为:

基本上,问题归结为 nginx 服务器没有将源请求是 HTTPS 协议(protocol)这一事实传递给 Mongrel 集群。这导致调用“request.ssl?”在 SslRequirement 插件中始终返回 false。

因此,当它返回为 false 时,“ensure_proper_protocol”将通过 https 重新发出操作,这将检查“request.ssl?”,这将返回“false”,这将通过 https 重新发出操作,它会检查“request.ssl?”,它会返回“false”,它会通过 https 重新发出操作,它会检查“request.ssl?”,它会返回“false”,它会重新发出通过 https 的操作,它将检查“request.ssl?”,它将返回“false”,这将通过 https 重新发出操作 ...

...你明白了。 mongrel 集群从没想过请求是通过 HTTPS 协议(protocol)发出的,所以它永远重定向了。 nginx 配置中的一个小改动来纠正这个问题,BAM-O:问题已解决。

关于ssl - nginx + SslRequirement + mongrel cluster = 无限重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com