如何在负载均衡上将 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。