Пустой «текущий URL» для Django, развернутого с Nginx и fastcgi

Когда я запрашиваю этот URL

http://mywebsite.com/foos/ 

Джанго дай мне:

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

ошибки:
- в URL-адресе запроса добавляется '/' в конце,
- в текущем URL-адресе пусто.

моя спецификация :
Я запускаю свой веб-сайт django с nginx в качестве обратного прокси для fast_cgi.

Вот конфиг моего сайта для 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-адрес в порядке.


person Christophe Debove    schedule 15.02.2012    source источник
comment
Пожалуйста, не могли бы вы обновить свой вопрос, включив в него /etc/nginx/fastcgi_params   -  person Alasdair    schedule 15.02.2012


Ответы (1)


Вам не хватает параметра PATH_INFO.

fastcgi_param PATH_INFO $fastcgi_script_name;

См. документацию по nginx: http://wiki.nginx.org/DjangoFastCGI.

Если вы попробуете «nginx PATH_INFO django» в своей любимой поисковой системе, похоже, что некоторым пользователям также пришлось удалить параметр SCRIPT_NAME, чтобы заставить его работать.

person Alasdair    schedule 15.02.2012
comment
Рад, что это сработало. Вам пришлось удалить SCRIPT_NAME или достаточно было добавить PATH_INFO? - person Alasdair; 16.02.2012
comment
Я не знаю в первый раз, когда я не удалил его, и это не сработало, поэтому я удалил и я работаю (я не знаю, потому что в первый раз я забыл перезапустить nginx), так что ... Если я думаю, что я будет отдыхать. - person Christophe Debove; 16.02.2012