Django: как отключить проверку HTTP_HOST на определенной конечной точке? [дубликат]

Я определил суперпростую конечную точку healthcheck в моем приложении Django (urls.py) для использования в среде docker compose, например:

services:
  django:
    build:
      context: .
      dockerfile: ./compose/production/django/Dockerfile
    depends_on:
      db:
        condition: service_healthy
    env_file:
      - ./.envs/.production/.django
    command: /start
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000/healthcheck/"]
      start_period: 20s
      interval: 15s
      timeout: 10s
      retries: 5

start.sh

#!/bin/bash

set -o errexit
set -o pipefail
set -o nounset


python /app/manage.py collectstatic --noinput

exec /usr/local/bin/gunicorn config.asgi --bind 0.0.0.0:5000 --chdir=/app -k uvicorn.workers.UvicornWorker
# ... various imports

def healthcheck():
    return HttpResponse()


urlpatterns = [
    # Django Admin, use {% url 'admin:index' %}
    path(settings.ADMIN_URL, admin.site.urls),
    # User management
    path("accounts/", include("allauth.urls")),
    # Hijack
    path("hijack/", include("hijack.urls")),
    # Healthcheck
    path("healthcheck/", healthcheck, name="healthcheck"),
    # Media files
    *static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT),
]
if settings.DEBUG:
    # Static file serving when using Gunicorn + Uvicorn for local web socket development
    urlpatterns += staticfiles_urlpatterns()

В локальной среде проблем нет, поскольку localhost находится внутри конфигурационной переменной ALLOWED_HOSTS. Но если я нахожусь в производственной среде, добавление "localhost" в список разрешенных хостов не кажется хорошей практикой.

Поскольку конечная точка healthcheck используется только для внутренних нужд, есть ли способ решить эту проблему? В голове крутится мысль о том, чтобы пропустить эту проверку только для этой конечной точки, но я не знаю, как это сделать и возможно ли это вообще. Может быть, есть другие лучшие решения?

Вернуться на верх