我已经按照本教程进行了操作:http://blog.wercker.com/2013/11/25/django-16-part3.html我现在正试图让它在Vagrant本地工作.我不是想使用Wercker.
安装完所有内容后,我尝试访问该网站,但每次都收到错误请求(400)错误.我不知道这是由于nginx还是gunicorn中的问题.
它们都有一个日志条目,所以至少我知道请求一直通过gunicorn并且不会在nginx级别停止.
问题在哪里?Gunicorn?nginx的?
这是gunicorn和nginx的日志.
我看到favicon丢失了,但这不应该阻止页面显示正确吗?
Gunicorn:
>>> cat /var/local/sites/hellocities/run/gunicorn.error.log 10.0.0.1 - - [28/Jan/2014:07:05:16] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36" 10.0.0.1 - - [28/Jan/2014:07:09:43] "GET / HTTP/1.0" 400 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36"
Nginx的:
>>> cat /var/log/nginx/hellocities-access.log 10.0.0.1 - - [28/Jan/2014:07:05:16 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36" 10.0.0.1 - - [28/Jan/2014:07:05:20 +0000] "GET /favicon.ico HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36" 10.0.0.1 - - [28/Jan/2014:07:09:43 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36" 10.0.0.1 - - [28/Jan/2014:07:09:44 +0000] "GET /favicon.ico HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36" >>> cat /var/log/nginx/hellocities-error.log 2014/01/28 07:05:20 [error] 13886#0: *1 open() "/var/local/sites/hellocities/static/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: _, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.200" 2014/01/28 07:09:44 [error] 13886#0: *3 open() "/var/local/sites/hellocities/static/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: _, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.200"
Andrii Zarub.. 66
我有同样的问题,并添加ALLOWED_HOSTS = ("yourdomain.com",)
到设置修复它.
更新:还有其他几种可能性:
Nginx(或您使用的任何Web服务器)不会将$ host变量传递给应用程序
主机包含下划线
详情请见:https://blog.anvileight.com/posts/how-to-fix-bad-request-400-in-django/
由于我遇到了同样的问题(尝试与流浪汉分享时有400个错误代码),我偶然发现了这个问题.答案和评论是正确的,因为显而易见的解决方案是设置ALLOWED_HOSTS
列表,但我已经正确设置它(我想).
我不能代表nginx,因为我在apache2上运行它,但是这就解决了这个问题:
查看ALLOWED_HOSTS
文档,找出最适合您案例的文档.
使用vagrant,您可能会发现接受所有vagrantshare.com子域很有用,所以只需将'.vagrantshare.com'
(注意点)添加到ALLOWED_HOSTS
列表中即可.
不确定是否真的有必要,但我更改了wsgi.py
文件的修改日期
touch wsgi.py
当我使用apache2时,我需要重启服务.
sudo service apache2 restart
然后它奏效了.
我有同样的问题,并添加ALLOWED_HOSTS = ("yourdomain.com",)
到设置修复它.
更新:还有其他几种可能性:
Nginx(或您使用的任何Web服务器)不会将$ host变量传递给应用程序
主机包含下划线
详情请见:https://blog.anvileight.com/posts/how-to-fix-bad-request-400-in-django/