EC2 Ubuntu NGINX配置HTTPS重定向给我错误:ERR_TOO_MANY_REDECTS



背景

我有一台Ubuntu机器在AWS EC2实例(Node/Express应用程序(上运行,其SSL证书设置使用证书管理器和负载均衡器。这对于直接使用https(例如https://example.com(访问我的网站来说效果很好。但是,使用http会导致连接不安全。

在whynopadlock.com上查看时,我被告知我的网络服务器没有强制HTTPS。我的web服务器是使用NGINX作为我的EC2实例的私有IP的反向代理来设置的。我四处寻找,似乎找不到像我这样的合适的例子,尽管我试图拼凑出我能找到的东西。

当我尝试设置强制HTTPS重定向时,我会得到ERR_TOO_MANY_REDIRECTS

之前:原始Nginx配置

server {
listen 80;
location / {
proxy_pass http://{{MASKED_EC2_INSTANCE_PRIVATE_IP_FOR_POST}}:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

注意:此配置允许https://example.com为了加载良好,但是如果使用http://example.com并导致不安全的连接。

之后:添加HTTPS重定向后的NGINX配置

# HTTP
server {
listen       80 default_server;
listen       [::]:80 default_server;
server_name  localhost;
return 301   https://$host$request_uri;
}
# HTTPS
server {
listen       443 default_server;
listen       [::]:443 default_server;
server_name  localhost;
location / {
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass https://{{MASKED_EC2_INSTANCE_PRIVATE_IP_FOR_POST}}:8000;
proxy_set_header X-Forwarded-Proto https;
}
}

问题

我现在看到,当我用http加载域时,我被成功重定向到https,但我收到了错误ERR_TOO_MANY_REDIRECTS

有人能帮我了解我在配置中遗漏了什么或可能做错了什么吗?

由于您使用ALB,您可以将http重定向到ALB本身的https。AWS提供了如何设置的指南:

如何使用应用程序负载均衡器将HTTP请求重定向到HTTPS?

该过程包括创建http侦听器并向其添加重定向操作,而不是常规的转发规则。这样,您就不必对实例执行任何更改,因为所有操作都由ALB负责。

此外,由于您使用的是AWS证书管理器,您必须使用ALB,因为ACM SSL证书不能在实例上使用。ACM只能在负载平衡器(ALB、CLB或NLB(、CloudFront发行版或API网关上使用。

最新更新