Когда я устанавливаю DEBUG=False, Django выдает мне 400 неверных запросов, я использую [docker, nginx, django, gunicorn]

#django #docker #nginx #gunicorn #production

Вопрос:

Я пытаюсь определить производственный env для Django, используя docker, Nginx и Gunicorn, и он отлично работает, когда debug=True, Если я делаю debug=False, проблема начинается здесь, выдает мне неверный запрос (400), мой файл Nginx выглядит так:

 upstream API {
     server backend-stack:8000;
}
server {

  listen 80;
  server_name localhost;


  location / {
    proxy_set_header Host $host;
    proxy_pass http://api;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
  }
  location /static/ {
    alias /backend/static/;
  }
  location /media/ {
    alias /backend/media/;
  }
}
 

мои разрешенные хосты В settings.py

 if env.get("ALLOWED_HOSTS"):
    ALLOWED_HOSTS = env.get("ALLOWED_HOSTS")
 

мой gunicorn выполняет команду из entrypoint.sh файл:

 gunicorn core.wsgi:application --bind 0.0.0.0:8000
 

также вот мой контейнер nginx В docker-compose:

 nginx:
container_name: nginx-stack
build: ./nginx
restart: always
volumes:
  - ./nginx/config:/etc/nginx/conf.d
  - ./nginx/log:/var/log/nginx
  - static_volume:/app_backend/static
  - media_volume:/app_backend/media
ports:
  - 80:80
  - 443:443
depends_on:
  - backend
networks:
  - app-network
 

мое значение allowed_hosts:

 ALLOWED_HOSTS = ['localhost', '127.0.0.1', '0.0.0.0', '*']
 

наконец, получите доступ к файлу журнала для nginx :

 192.168.144.1 - - [12/Jun/2021:15:18:02  0000] "GET / HTTP/1.1" 400 154 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36" "-"
 

Комментарии:

1. И каково значение переменной среды ALLOWED_HOSTS ?

2. @AbdulAzizBarkat ALLOWED_HOSTS = [‘локальный хост’, ‘127.0.0.1’, ‘0.0.0.0’, ‘*’]

Ответ №1:

хорошо, я сделал это.Проблема возникла из-за того, что я еще не создал ни одного представления или страницы с URL-адресом после создания новой страницы и установки ее в качестве домашней страницы, которая сейчас работает.