【问题标题】:Empty 'current url' for Django deployed with Nginx and fastcgi使用 Nginx 和 fastcgi 部署的 Django 的空“当前 url”
【发布时间】:2012-03-07 02:05:16
【问题描述】:

当我查询这个网址时

http://mywebsite.com/foos/ 

Django 给我:

Page not found (404)
Request Method:     GET
Request URL:    http://mywebsite.com/foos//    
The current URL, , didn't match any of these.

错误:
- 在请求 URL 中,它在末尾添加我“/”,
- 当前 URL 为空。

我的规格:
我使用 nginx 作为 fast_cgi 的反向代理来运行我的 django 网站。

这里是我的 nginx 网站配置:

server {
         listen   80;
         server_name  mywebsite.com;


             location / {
                     fastcgi_pass unix:/tmp/_var_wwwdjango_mywebsite.socket;
                     include /etc/nginx/fastcgi_params;
             }
    }

这是我的 fastcgi_params 文件:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;
fastcgi_param   PATH_INFO               $fastcgi_script_name;
fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

#fastcgi_param  HTTPS                   $server_https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

备注:

  • 如果我将 url(r'^$', 'myapp.views.index') 添加到我的模式中,它会为我呈现我所有请求的视图...所以这显然是 nginx conf 或 fast_cgi 问题。

  • 当我使用 django 开发服务器执行我的网站时,我的 url 正常。

【问题讨论】:

  • 请您更新您的问题以包含/etc/nginx/fastcgi_params

标签: django nginx url-pattern


【解决方案1】:

您缺少 PATH_INFO 参数。

fastcgi_param PATH_INFO $fastcgi_script_name;

查看 nginx 文档:http://wiki.nginx.org/DjangoFastCGI

如果您在自己喜欢的搜索引擎中尝试“nginx PATH_INFO django”,看起来有些用户还必须删除 SCRIPT_NAME 参数才能使其正常工作。

【讨论】:

  • 很高兴它成功了。您是否必须删除 SCRIPT_NAME,或者添加 PATH_INFO 是否足够?
  • 不知道第一次没删掉也没用所以删了就可以了(不知道第一次忘记重启nginx了)所以...如果我认为我会休息。
猜你喜欢
  • 2011-03-24
  • 2013-10-06
  • 2012-05-02
  • 2012-11-09
  • 2018-01-18
  • 2020-12-26
  • 2023-03-04
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多