标签:python nginx django gunicorn
我正在尝试使用Django,nginx和gunicorn运行我的服务器.在开发服务器上,一切都很顺利.但是在生产服务器上,gunicorn总是返回Bad Request(400).
我知道我需要设置ALLOWED_HOSTS变量,我做了.我尝试了正确的域名,星号,甚至将DEBUG设置为True.但是,它仍然是Bad Request(400).
这是我的nginx-config:
server {
listen 80;
location /static {
alias /home/username/sites/sub.domain.example.com/static;
}
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:8000;
}
}
我的wsgi-prod.py文件:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings_prod")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
settings_prod.py文件(缩写):
DEBUG = False
ALLOWED_HOSTS=["*"]
我用以下方式开始使用gunicorn(使用virtualenv):
gunicorn --bind 127.0.0.1:8000 app.wsgi_prod:application
当我使用manage.py runserver -settings = app.settings_prod启动服务器时,该站点是可访问的. gunicorn的错误日志显示什么,访问日志只显示400.静态内容确实有效.
解决方法:
您应该告诉Nginx将主机传递给Gunicorn,如下所示:
proxy_set_header Host $host;
另外,我也会传递这些值(示例),以便您可以访问请求的IP:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
如果您还没有这样做,也请检查您的Nginx日志.
我希望这有帮助.
编辑:
还尝试设置设置服务器名称,如:
server_name your_domain.com www.your_domain.com
最后但并非最不重要的是尝试像这样设置您的环境(在这种情况下的解决方案):
os.environ['DJANGO_SETTINGS_MODULE'] = "app.settings_prod"
标签:python,nginx,django,gunicorn 来源: https://codeday.me/bug/20190623/1274168.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。