Jelastic Nginx http 到 https 重定向

Jelastic Nginx http to https redirect

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

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

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

提前致谢。

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

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

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

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

导航到/conf

下的nginx-jelastic.conf

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

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

配置完成后别忘了按"Save"键重启nginx

大家好)对于域 ssl,此变体工作得很好

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

接受的解决方案不适用于我的设置。我不得不将 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;

同样有效。