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 используется только для внутренних нужд, есть ли способ решить эту проблему? В голове крутится мысль о том, чтобы пропустить эту проверку только для этой конечной точки, но я не знаю, как это сделать и возможно ли это вообще. Может быть, есть другие лучшие решения?