我有一个奇怪的错误发生在使用Gunicorn时:
我有一个setup Nginx+a django项目,配置如下:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header SCRIPT_NAME /;
}
当我使用django development server(1.7.5)时:
^{pr2}$一切正常。在
但当我跑的时候
gunicorn -b :8080 --forwarded-allow-ips="*" --proxy-allow-from="*" app.wsgi
我只得到404个错误(django接收请求是因为我有调试消息)。在
这些错误很奇怪,因为变量urlpatterns(https://github.com/django/django/blob/1.7.5/django/views/debug.py#L1102)没有设置。我只获得设置为的reason变量(https://github.com/django/django/blob/1.7.5/django/views/debug.py#L1119):
{u'path': u'x/'}
按照我的要求http://domain.something.com/x/
最麻烦的是django附带的基本服务器工作正常。。。:(
拆卸
从nginx配置将完成这项工作。这就是django如何处理
SCRIPT_NAME
头:当存在时,django将在解析时从URL的前面剪切该值,并在反转时将其添加回URL的前面。这样你就可以告诉django所有的url都应该是相对于某个目录的,而不需要接触项目中的任何内容。SCRIPT_NAME
应该设置为不带尾随的/因此域的根目录的正确值是空字符串(或完全没有SCRIPT_NAME
)。相关问题 更多 >
编程相关推荐