在 AWS 的 EC2 中使用 DEBUG=False django,域,stage.example.com 不可访问

With DEBUG=False django in EC2 in AWS, domain, stage.example.com is not reachable

我已经设置了一个 Django 服务器来为我的舞台环境提供服务,例如 http://stage.example.com。我在我的 dns 设置中为 'stage' 输入了 CNAME,就像 ec2-xxx-xxx-xxx.compute.amazonaws.com 一样。这工作正常,直到我在设置中翻转 DEBUG = False。

如果 DEBUG=False,stage.example.com 无法访问并以 DNS 查找失败告终。

顺便说一句,我在 ALLOWED_HOST 中添加了 stage.example.com。 如何让 stage.example.com 在 Django 的生产模式下工作?

编辑:我在 Django 之上使用了 gunicorn 和 nginx。

如果 nginx / gunicorn 通常你可以 运行 在 127.0.0.1 上,因为 nginx 是反向代理。

# settings.py
ALLOWED_HOSTS = ['127.0.0.1']

站点可用/站点启用中的 Nginx 配置文件

server {
    server_name example.com;

    access_log off;

    location /static/ {
        alias /var/www/django-path-to-static-root;
    }

    location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

独角兽

gunicorn something.wsgi --bind 127.0.0.1:8001

我稍后解决了这个问题。问题是由于 PREPEND_WWW django 设置。启用此选项后,DNS 不会被解析,因为它在被 DNS 解析之前会先转到 www.stage.xxx.xxx。