2010-01-20 5 views
1

Я установил FastCGI + NGINX Django, но он работает только для корневого URL: любой запрос http://example.com/anything перенаправляет на http://example.com. Внутренний сервер Django отлично работает, статический файловый сервис NGINX и обработка корневого URL FastCGI в порядке, журнал ошибок ясен. Вот раздел сервера моей конфигурации:Проблема с Django + NGINX URL

server { 
     listen  80; 
     server_name example.com; 

     location/{ 
       fastcgi_pass localhost:8000; 
       include fastcgi_params; 
     } 

     location /static/ { 
       alias /root/web_development/src/web_development/static/; 
     } 
} 

Что я делаю неправильно? Заранее спасибо.

+0

Что такое содержание fastcgi_params? –

ответ

4

Попробуйте это конфиги:

server { 
     listen 80; 
     server_name example.com; 

     location/{ 
       root /home/example.com/foo; 
       fastcgi_pass 127.0.0.1:8000; 
       fastcgi_param PATH_INFO $fastcgi_script_name; 
       fastcgi_param REQUEST_METHOD $request_method; 
       fastcgi_param QUERY_STRING $query_string; 
       fastcgi_param CONTENT_TYPE $content_type; 
       fastcgi_param CONTENT_LENGTH $content_length; 
       fastcgi_pass_header Authorization; 
       fastcgi_intercept_errors off; 
     } 
} 

Убедитесь, что вы уже сообщали Nginx порт, который Джанго работает.

+0

Это определенно работает! Спасибо! Проблема заключалась в отсутствии параметра 'PATH_INFO' в' fastcgi_params'. – Shark

+0

Не эта настройка передаёт все файлы через fastcgi? Мне кажется, что только файлы php должны быть сопоставлены, а другие ресурсы должны обслуживаться напрямую. –

2

Вы можете добавить эту строку в местоположение /:

fastcgi_split_path_info ^()(.*)$; 

из djangoandnginx

+0

Вопрос уже имеет рабочий ответ, хотя –

Смежные вопросы