我正在尝试使用 NGINX 在我的 http 端点上强制使用 https,如下所示:
server {
location / {
root /data/www;
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
}
location /images/ {
root /data;
}
}
请注意,我从 nginx 提供的都是静态文件(HTML 文件、javascript 文件和几个
我的 ELB 健康检查命中 HTTP:80/。所以我认为它正在发生,ELB 尝试 ping 我的服务器,命中重写,并返回 301?我见过很多关于 ruby 和 node 的答案,但这只是静态资产。救命!
答案1
是的,ELB 将通过其 IP 访问您的服务器(从而获得默认server
块),并且除 2xx 请求之外的任何请求都将被视为失败处理。
我们使用默认的服务器块来让 ELB 进行 ping:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
location = /status {
return 200;
access_log off;
}
}
答案2
我最终做的是再次进行健康检查 TCP:80 而不是 HTTP:80