如果ELB附加到ec2,则HTTP ping上的运行状况检查失败,但TCP ping成功

问题描述 投票:-1回答:1

我正在为一个简单的应用程序构建后端。这是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证书。

  • 通过http ping,即使我将其添加到nginx服务器配置文件,健康检查也会返回400响应。
location /health {
    return      200;
}
amazon-web-services nginx amazon-ec2 uwsgi aws-load-balancer
1个回答
0
投票

TCP运行状况检查只是检查是否可以建立TCP连接,而HTTP运行状况检查将检查响应中的特定HTTP状态代码。您的健康检查网址是否未返回200回复?

© www.soinside.com 2019 - 2024. All rights reserved.