如何在负载均衡上将 HTTP 流量重定向到 HTTPS?

流量从 HTTP 重定向到 HTTPS(端口 443)时,收到了错误“ERR_TOO_MANY_REDIRECTS”。如何在不将后端侦听器更改为端口 443 的情况下解决此错误?

简短描述
负载均衡无法将 HTTP 流量重定向到 HTTPS,可以在 Web 服务器上重写规则。

重写规则配置为使用 X-Forwarded-Proto 标头和仅重定向 HTTP 客户端。否则,重写规则可能会和它后面的实例之间创建重定向请求的无限循环。此类循环将导致错误“ERR_TOO_MANY_REDIRECTS”。

解决方法
查看以下针对 Apache、NGINX 和 IIS Web 服务器的示例配置。配置负载均衡

后面的 Web 服务器,让其使用 X-Forwarded-Proto 标头根据客户端使用的是 HTTP 还是 HTTPS 来定向流量。请务必将如下所述的重写规则添加到 Web 服务器中:

将使用 HTTP 的客户端重定向到 HTTPS URL
直接为使用 HTTPS 的客户端提供服务

NGINX 服务器

server {
    listen 80;
    server_name _;
    if ($http_x_forwarded_proto = 'http'){
    return 301 https://$host$request_uri;
    }
}

重启 NGINX。