Я постоянно получаю по электронной почте ошибку `Invalid HTTP_HOST header`.
Я использую Django==4.1.2. Я развернул свой сайт с помощью Docker на сервере Ubuntu, и я постоянно получаю сообщения 'Invalid HTTP_HOST header'.
- [Django] ERROR (EXTERNAL IP): Недопустимый заголовок HTTP_HOST: 'www.google.com'. Возможно, вам нужно добавить 'www.google.com' в ALLOWED_HOSTS. .
- [Django] ERROR (EXTERNAL IP): Недопустимый заголовок HTTP_HOST: 'ad608a31b0be:8000'. Возможно, вам потребуется добавить 'ad608a31b0be' в ALLOWED_HOSTS. [Django]
- [Django] ERROR (EXTERNAL IP): Неверный заголовок HTTP_HOST: 'www'. Возможно, вам потребуется добавить 'www' в ALLOWED_HOSTS.
- [Django] ERROR (EXTERNAL IP): Недопустимый заголовок HTTP_HOST: 'api.ipify.org'. Возможно, вам потребуется добавить 'api.ipify.org' в ALLOWED_HOSTS.
Вот код моего файла Docker
FROM python:3.9 as build-python
RUN apt-get -y update \
&& apt-get install -y gettext \
# Cleanup apt cache
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install Python dependencies
COPY requirements.txt /app/
WORKDIR /app
RUN pip install -r requirements.txt
RUN pip install --upgrade pip
### Final image
FROM python:3.9-slim
RUN groupadd -r tgcl && useradd -r -g tgcl tgcl
RUN mkdir -p /app/media /app/static \
&& chown -R tgcl:tgcl /app/
COPY . /app
WORKDIR /app
EXPOSE 8000
CMD ["gunicorn", "--bind", ":8000", "--workers", "4", "tgcl.asgi:application"]
Вот мои настройки Django
ALLOWED_HOSTS = ['app.thegoodcontractorslist.com', 'www.thegoodcontractorslist.com']
CORS_ALLOWED_ORIGINS = [
"http://localhost:4200",
"http://localhost:3000",
"http://dev.thegoodcontractorslist.com",
]
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
CSRF_TRUSTED_ORIGINS=['https://app.thegoodcontractorslist.com',]
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True
Конфигурация Nginx для моего сайта блога
server {
listen 443;
listen [::]:443;
server_name thegoodcontractorslist.com;
root /var/www/html/TGCL;
ssl_certificate /var/www/html/TGCL/SSLFE/tgcl_combine.crt;
ssl_certificate_key /var/www/html/TGCL/SSLFE/private.key;
return 301 https://www.thegoodcontractorslist.com$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2;
access_log /mnt/volume_nyc1_01/nginx_logs/access.log;
error_log /mnt/volume_nyc1_01/nginx_logs/error.log;
server_name www.thegoodcontractorslist.com;
root /var/www/html;
ssl_certificate /var/www/html/TGCL/SSLFE/tgcl_combine.crt;
ssl_certificate_key /var/www/html/TGCL/SSLFE/private.key;
proxy_ssl_server_name on;
location ~ ^(/.*[^/])/$ {
if ($query_string) {
return 301 $scheme://$host$1?$query_string;
}
return 301 $scheme://$host$1;
}
location = /blog/ {
rewrite ^/blog/(.*)/$ /blog/$1 permanent;
}
location /blog {
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
}
location ~ ^/blog/.*\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ ^/blog/.*\.xml$ {
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
}
location ~ \.xml$ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
limit_rate 8k;
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
listen [::]:80;
server_name thegoodcontractorslist.com www.thegoodcontractorslist.com;
root /var/www/html/blog;
index index.php index.html index.htm;
location /blog {
try_files $uri $uri/ /index.php?$args;
}
location / {
return 301 https://www.thegoodcontractorslist.com$request_uri;
}
}
Как я могу решить эту проблему?