代码之家  ›  专栏  ›  技术社区  ›  jefflunt

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

  •  1
  • jefflunt  · 技术社区  · 14 年前

    我看到的症状是,任何启用了“ssl\u required”的操作,以及任何我手动输入的前面有https的URL,都会进入一个无限循环,下面是开发.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\u允许”-所以我尝试了,但没有结果。

    如果我删除SslRequirement的使用,并删除任何“ssl\u required/ssl\u allowed”引用,那么https就可以正常工作了——所以从http到https的重定向似乎是问题所在。

    有什么线索吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   jefflunt    14 年前

    答案如下:

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

    简短的版本是,我在nginx配置中向SSL vhost添加了以下行:


    因此,当返回false时,“确保\u正确的\u协议”将通过https重新发出操作,这将检查请求.ssl?",它将返回“false”,这将通过https重新发出操作,这将检查请求.ssl?",它将返回“false”,这将通过https重新发出操作,这将检查请求.ssl?",它将返回“false”,这将通过https重新发出操作,这将检查请求.ssl?",它将返回“false”,这将通过https重新发布操作。。。

    ……你明白了。mongrel集群从不认为请求是通过HTTPS协议的,所以它永远重定向。nginx配置中的一个小改动可以纠正这个问题,BAM-O:问题解决了。

    推荐文章