【发布时间】:2018-11-01 02:55:35
【问题描述】:
我将 AWS Lightsail 负载均衡器与另一个 Lightsail ec2 实例结合使用,以便可以使用 Lightsail 负载均衡器中内置的免费证书管理器。这似乎会自动将所有流量从我的负载均衡器转发到我在port 80 上的 ec2 nginx 服务器,因此以下配置也支持https 连接:
server {
listen 80;
server_name mountainviewwebtech.ca www.mountainviewwebtech.ca;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
但是,当我添加以下行以确保 http 重定向到 https 时,我收到错误 ERR_TOO_MANY_REDIRECTS,因为即使使用安全连接,我的 ec2 实例也仅在 port 80 上接收流量,所以它只是一遍又一遍地重定向。
if ($scheme != https) {
return 301 https://$host$request_uri;
}
在转发到我的 ec2 实例之前,是否可以获取原始的 $scheme?
【问题讨论】:
-
测试不应该是
if ($http_x_forwarded_proto != "https") { ...吗?平衡器应该在传入请求上设置X-Forwarded-Proto。我不知道$scheme是否可行,在这里。 -
非常感谢您的帮助。这解决了我的问题,以便现在强制执行
https,但我现在遇到了可能是问题的事情。似乎正在发生的事情是每个请求(甚至是静态资产的请求)都被重定向到https,我不确定这是否是一个好习惯。我知道的一件糟糕的事情是,由于重定向数量https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fmountainviewwebtech.ca%2F,Google Page Insight Tools 甚至无法分析我的网站。我想知道我现在是否只需要一个 CDN 或修改配置更多
标签: amazon-web-services nginx amazon-lightsail