2012-02-15 1 views
3

Когда я запрашиваю этот адресПустой 'текущий URL' для Django развертывается с Nginx и FastCGI

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 как reverseeproxy для 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 в порядке.

+0

Просьба обновить свой вопрос, чтобы включить '/ etc/nginx/fastcgi_params' – Alasdair

+0

@Alasdair Я добавил его. –

ответ

3

У вас отсутствует параметр PATH_INFO.

fastcgi_param PATH_INFO $fastcgi_script_name; 

См Nginx документы: http://wiki.nginx.org/DjangoFastCGI

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

+0

Большое спасибо –

+0

Рад, что это сработало. Вам нужно было удалить SCRIPT_NAME или добавить PATH_INFO? – Alasdair

+0

Я не знаю, в первый раз, когда я его не удалял, и это было не так, поэтому я удалил, и я работаю (не знаю, потому что в первый раз я забыл перезапустить nginx), так что ... Если я думаю Я успокоюсь. –