我目前使用反向代理映射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?基本上有两种选择:
- Cloudflare 设置一个标头,指示请求是否通过 HTTPS 发送给他们;或者
- 通过 HTTPS 到 Cloudflare 的连接也会通过 HTTPS 代理给您。
我以为 Cloudflare 支持选项 1,但现在找不到相关文档。不过,他们肯定支持选项 2,而且你甚至不需要购买自己的 TLS 证书即可实现此目的。我强烈建议这样做,并在 nginx 服务器上启用端口 443 以使用 TLS。