Django Ошибка: DisallowedHost - Неверный заголовок HTTP_HOST при использовании пользовательского домена от Namecheap

Недавно я развернул приложение Django на AWS EC2 и успешно получил доступ к нему через его публичный IP. Затем я приобрел домен у Namecheap (www.myproject.com), чтобы использовать его вместо IP-адреса. После настройки домена я столкнулся со следующей ошибкой при запуске Gunicorn с помощью команды:

gunicorn –bind 127.0.0.1:8001 wsgi:application

Обратный путь ошибки:

DisallowedHost at /
Invalid HTTP_HOST header: 'www.myproject.com,www.myproject.com'. The domain name provided is not valid according to RFC 1034/1035.
Request Method:
GET
Request URL:
http://www.myproject.com,www.myproject.com/
Django Version:
5.1.1
Exception Type:
DisallowedHost
Exception Value:
Invalid HTTP_HOST header: 'www.myproject.com,www.myproject.com'. The domain name provided is not valid according to RFC 1034/1035.
Exception Location:
/home/ubuntu/myproject/.venv/lib/python3.12/site-packages/django/http/request.py, line 151, in get_host
Raised during:
transcribe_audio.views.index
Python Executable:
/home/ubuntu/myproject/.venv/bin/python3
Python Version:
3.12.3
Python Path:
['/home/ubuntu/myproject/e',
 '/home/ubuntu/myproject/.venv/bin',
 '/usr/lib/python312.zip',
 '/usr/lib/python3.12',
 '/usr/lib/python3.12/lib-dynload',
 '/home/ubuntu/myproject/.venv/lib/python3.12/site-packages',
 '/home/ubuntu/myproject']
Server time:
Sun, 13 Oct 2024 13:37:50 +0000

Из ошибки следует, что заголовок HTTP_HOST каким-то образом дублируется (www.myproject.com,www.myproject.com), что приводит к неудаче запроса. Я не знаю, почему происходит это дублирование и как его решить.

NGINX Configuration:

Вот мой файл конфигурации NGINX:

server {
    listen 80;
    server_name myproject.com www.myproject.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /path/to/your/static/files;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Django settings.py:

ALLOWED_HOSTS = ['myproject.com', 'www.myproject.com', 'localhost', '127.0.0.1', '1.21.3.14.1']

Что я пробовал:

  • Проверил конфигурацию NGINX на наличие проблем.
  • Убедился, что домен правильно настроен на Namecheap с правильными DNS-записями.
  • Убедился, что имена доменов в ALLOWED_HOSTS верны.

    Несмотря на все эти усилия, ошибка сохраняется, и я подозреваю, что она связана с тем, как обрабатывается заголовок Host в конфигурации прокси NGINX.

    Вопрос: Что может быть причиной того, что заголовок HTTP_HOST содержит дублированный домен (т.е. www.myproject.com,www.myproject.com), и как я могу это исправить?

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