我正在为一个简单的应用程序构建后端。这是AWS EC2中的nginx-uwsgi-djangorest-api。因为我需要使用https发送请求,所以我将elb负载均衡器添加到我的ec2实例,该实例将HTTPS转发到HTTP。 ELB必须对模型进行健康检查。起初,我有健康检查的“80:HTTP / health”ping,我能够在/ health中看到结果
但健康检查总是失败,"GET /health/ HTTP/1.1" 400 37 "-" "ELB-HealthChecker/1.0"
显示在nginx和uwsgi日志上。
ec2实例的安全组
type - protocol - port range - source
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 /健康到80:TCP,它突然开始工作......
有人可以向我解释一下健康检查员的作用吗?我无法理解80:TCP healthchecker和http healthchecker之间的区别。这个没有应该达到的/ health / url。
我也有SSL证书。
location /health {
return 200;
}
TCP运行状况检查只是检查是否可以建立TCP连接,而HTTP运行状况检查将检查响应中的特定HTTP状态代码。您的健康检查网址是否未返回200
回复?