Nginx:反向代理和 http 到 https 重定向

Nginx:反向代理和 http 到 https 重定向

我目前使用反向代理映射my.domain.com到端口 5000,但也想将 http 流量重定向到 https。我不想添加 SSL 证书信息,因为这些都由 Cloudflare 处理。

这是我正在工作的反向代理:

server {
    listen 80;
    server_name my.domain.com;

    proxy_set_header X-Real-IP  $remote_addr;

    location / {
        proxy_pass http://localhost:3000;
    }
}

这是我ERR_TOO_MANY_REDIRECTS向反向代理添加 https 重定向的错误 () 尝试。

server {
    listen 80;
    server_name my.domain.com;
    return 302 https://my.domain.com$request_uri;
}

server {
    listen 443;
    server_name my.domain.com;

    proxy_set_header X-Real-IP  $remote_addr;

    location / {
        proxy_pass http://localhost:3000;
    }
}

答案1

您如何期望您的 Web 服务器知道与 Cloudflare 的连接是通过 HTTPS 还是 HTTP?基本上有两种选择:

  1. Cloudflare 设置一个标头,指示请求是否通过 HTTPS 发送给他们;或者
  2. 通过 HTTPS 到 Cloudflare 的连接也会通过 HTTPS 代理给您。

我以为 Cloudflare 支持选项 1,但现在找不到相关文档。不过,他们肯定支持选项 2,而且你甚至不需要购买自己的 TLS 证书即可实现此目的。我强烈建议这样做,并在 nginx 服务器上启用端口 443 以使用 TLS。

相关内容