我有一台在AWS EC2实例(Node / Express应用程序)上运行的Ubuntu计算机,使用证书管理器和负载均衡器设置了SSL证书。对于直接使用https(例如)直接访问我的网站,此方法效果很好https://example.com
。但是,使用会http
导致连接不安全。
检查whynopadlock.com,我被告知我的Web服务器未强制使用HTTPS。使用NGINX作为我EC2实例的私有IP的反向代理来设置我的Web服务器。我已经四处搜寻,似乎找不到像我这样的合适例子,尽管我试图拼凑出我能找到的东西。
当我尝试设置强制HTTPS重定向时,我得到了ERR_TOO_MANY_REDIRECTS
。
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导航到该站点并导致不安全连接,则不会进行重定向。
# 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侦听器并向其添加重定向操作,而不是常规转发规则。这样,您无需对实例执行任何更改,因为所有事务均由ALB负责。
另外,由于您使用的是AWS Certificate Manager,因此您必须使用ALB,因为不能在实例上使用ACM SSL证书。ACM只能在负载均衡器(ALB,CLB或NLB),CloudFront发行版或API网关上使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句