【发布时间】:2019-04-03 23:48:32
【问题描述】:
我正在为一个简单的应用程序构建后端。它与 AWS EC2 中的 nginx-uwsgi-djangorest-api 一起使用。 因为我需要使用 https 发送请求,所以我将 elb 负载均衡器添加到我的 ec2 实例中,该实例将 HTTPS 转发到 HTTP。 ELB 必须对模型进行健康检查。起初,我使用“80:HTTP /health” ping 进行健康检查,我能够在 /health 中看到结果
但是运行状况检查器总是在 nginx 和 uwsgi 日志上显示 "GET /health/ HTTP/1.1" 400 37 "-" "ELB-HealthChecker/1.0" 失败。
ec2 实例的安全组
类型-协议-端口范围-源
HTTP - TCP - 80 - 0.0.0.0/0
HTTP - TCP - 80 - ::/0
SSH - TCP - 22 - 0.0.0.0/0
负载均衡器的安全组
HTTP - TCP - 80 - 0.0.0.0/0
HTTPS - TCP - 443 - 0.0.0.0/0
nginx的配置文件
upstream django {
server unix:///tmp/mysocket.sock; # for a file socket
}
server {
listen 80;
server_name *.compute.amazonaws.com *.elb.amazonaws.com;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass django;
include uwsgi_params;
}
}
我几个小时都搞不明白出了什么问题,当我将健康检查 ping 端口和协议从 HTTP:80/health 更改为 80:TCP 时,它突然开始工作了...
谁能向我解释一下那个健康检查器是做什么的? 我无法理解 80:TCP healthchecker 和 http healthchecker 之间的区别。这个没有应该到达的 /health/ url。
我也已经获得了 SSL 认证。
- 通过http ping,即使我将它添加到nginx服务器的conf文件中,健康检查也是由400响应返回的。
location /health {
return 200;
}
【问题讨论】:
标签: amazon-web-services nginx amazon-ec2 uwsgi aws-load-balancer