尝试通过NGINX强制HTTPS用于我的单页应用程序时,AWS ELB运行状况检查失败

我试图强制使用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的im服务都是静态文件(一个HTML文件,JavaScript文件和一个coupl

我的ELB健康检查打到HTTP:80 /。 所以我认为这是发生,是ELB试图ping我的服务器,打重写,并得到返回301? 我已经看到了许多ruby和node的答案,但这只是静态资产。 帮帮我!

是的,ELB将通过它的IP命中你的服务器(从而得到默认的server块),除了2xx请求以外的任何东西都将作为失败处理。

我们使用ELB的默认服务器块来ping:

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; location = /status { return 200; access_log off; } } 

我最终做的是再次进行健康检查TCP:80不是HTTP:80