django - 在 awsvpc 网络模式下,从 aws ELB hostcheck 获取 400 以在 aws ECS 中使用 django ALLOWED_HOSTS?

标签 django amazon-ecs amazon-elb aws-load-balancer aws-application-load-balancer

当使用 awsvpc 网络模式转移到 ECS 时,我的 ALB 说我的所有主机都不健康,因为检查 /status/产生 400 秒。我已将问题缩小到 ALLOWED_HOSTS 出现问题的问题。

如何让我的网络应用程序向 ELB Healthchecker 提供 200 个?

最佳答案

另一个简单的解决方案是编写自定义 MIDDLEWARE这将在 ALLOWED_HOSTS 之前对 ELB 做出响应被检查。

中间件可以很简单:
project/app/middleware.py

from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin

class HealthCheckMiddleware(MiddlewareMixin):
    def process_request(self, request):
        if request.META["PATH_INFO"] == "/ping/":
            return HttpResponse("pong")
settings.py
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'app.middleware.HealthCheckMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    ...
]

Django 中间件引用 https://docs.djangoproject.com/en/dev/topics/http/middleware/

关于django - 在 awsvpc 网络模式下,从 aws ELB hostcheck 获取 400 以在 aws ECS 中使用 django ALLOWED_HOSTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55718292/

相关文章:

django - 为什么django开发服务器卡在这个管理工具js文件上?

mysql - 每个 python\django 进程的单个 MySQL session

python - Django 休息框架。检索的工作原理

amazon-web-services - AWS Fargate 容器中的持久性

amazon-web-services - AWS ELB : Failed to load resource: the server responded with a status of 503 (Service Unavailable: Back-end server is at capacity)

python - 使用 django channel 和 websockets

amazon-web-services - 使用 docker-compose 在 ECS 中出现 ecs-searchdomain-sidecar 的问题

django - docker : compose file is incompatible with Amazon ECS

node.js - AWS 应用程序负载均衡器和 socket.io

amazon-web-services - 负载均衡器监控浪涌队列长度