Nginx:反向代理和httpredirect到https

我目前使用反向代理my.domain.com映射到端口5000,但也希望将httpstream量redirect到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 )尝试将httpsredirect添加到反向代理。

 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; } } 

您如何期望您的Web服务器知道通过HTTPS或HTTP连接到Cloudflare? 基本上有两个select:

  1. Cloudflare设置一个标题,表明请求是否通过HTTPS传送给他们; 要么
  2. 通过HTTPS的Cloudflare连接也通过HTTPS代理给您。

我认为Cloudflare支持选项1,但我现在找不到任何文档。 但是,他们绝对支持选项2, 您甚至不需要购买自己的TLS证书即可 。 我强烈build议这样做,并启用nginx服务器上的端口443来使用TLS。