在 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。
我已经设置了一个 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。