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']
Что я пробовал:
Несмотря на все эти усилия, ошибка сохраняется, и я подозреваю, что она связана с тем, как обрабатывается заголовок Host в конфигурации прокси NGINX.
Вопрос: Что может быть причиной того, что заголовок HTTP_HOST содержит дублированный домен (т.е. www.myproject.com,www.myproject.com), и как я могу это исправить?