【问题标题】:When I set DEBUG=False Django gives me 400 bad request am using [docker, nginx, django, gunicorn]当我设置 DEBUG=False Django 给我 400 错误请求时正在使用 [docker, nginx, django, gunicorn]
【发布时间】:2021-08-29 04:34:53
【问题描述】:

我正在尝试使用 docker 和 Nginx 和 Gunicorn 为 Django 定义生产环境,当 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/;
  }
}

我的 allowed_hosts 在 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" "-"

【问题讨论】:

  • 而环境变量ALLOWED_HOSTS的值是多少?
  • @AbdulAzizBarkat ALLOWED_HOSTS = ['localhost', '127.0.0.1', '0.0.0.0', '*']

标签: django docker nginx gunicorn production


【解决方案1】:

好的,我做到了。问题正在发生,因为在创建新页面并将其设置为主页后,我还没有创建任何视图或任何带有 URL 的页面。现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2021-10-30
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2014-06-28
    相关资源
    最近更新 更多