【问题标题】:Jelastic Nginx http to https redirectJelastic Nginx http 到 https 重定向
【发布时间】:2016-05-22 03:38:15
【问题描述】:

我在 Jelastic 中有一个帐户,我想强制我的网站仅通过 https 运行。我已经使用 nginx 平衡器创建了环境 nginx + php 并启用了 Jelastic SSL(正如它所描述的 here)。

每当我尝试设置从 http 到 https 的 301 重定向时都没有运气。使用 mod_rewrite 对我不起作用,我唯一得到的是循环重定向。谷歌没有帮助。

我真的需要建议。将提供任何其他信息。

提前致谢。

【问题讨论】:

    标签: ssl nginx jelastic


    【解决方案1】:

    接受的解决方案不适用于我的设置。我不得不将 if 语句更改为以下内容:

    if ($http_x_forwarded_proto != "https") {
      return 301 https://$host$request_uri;
    }
    

    正如官方 nginx 文档 https://www.nginx.com/blog/creating-nginx-rewrite-rules#https 中所述,您应该使用:

    return 301 https://$host$request_uri;
    

    同样有效。

    【讨论】:

      【解决方案2】:

      确实,当您启用 Jelastic SSL(意味着您不能使用公共 IP)时,共享解析器会处理对您服务器的所有请求,但解析器和您的服务器之间的请求不是 https。因此,通过重定向,您尝试设置,您的服务器将传入的 http 请求重定向到 https 并将其发送回解析器,因此您有一个循环重定向。

      您需要执行几个简单的步骤来解决此问题。 登录仪表板,打开 nginx 平衡器的设置

      导航到 /conf 下的 nginx-jelastic.conf

      并将代码添加到配置文件中:

      # force https-redirects
      if ($http_X_Forwarded_Proto = http) {
          return 302 https://$host$request_uri;
      }
      

      配置完成后不要忘记按“保存”按钮并重启nginx。

      【讨论】:

      【解决方案3】:

      如果您使用 Jelastic SSL,这意味着您在共享的 Jelastic 解析器上卸载了 SSL = 对您服务器的所有请求都是 http(不是 http / https)。

      您需要检查 X-Forwarded-Proto 标头以确定哪些请求最初是 https。

      【讨论】:

        【解决方案4】:

        Всем привет) 使用域 ssl 这个变体可以正常工作

        if ( $scheme = "http" ) { rewrite ^(.*)$    https://$host$1 last; }
        

        【讨论】:

          猜你喜欢
          • 2014-03-11
          • 2011-03-29
          • 2018-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-11
          • 2017-09-20
          • 2017-05-25
          相关资源
          最近更新 更多