Приложение Django работает под runserver, но 404s под nginx - PullRequest
3 голосов
/ 14 октября 2011

Мое приложение Django нормально работает на моем сервере, когда оно запускается под "python manage.py runserver .....", но когда я запускаю его под nginx / fastcgi, я получаю 404.

Вотсообщение об ошибке:

Страница не найдена (404)
Метод запроса: GET
URL-адрес запроса: blah.youtrain.me/admin/ (Я удалил http из-за ограничений StackOverflow дляновая учетная запись)

Используя URLconf, определенный в youtrainme.urls, Django попробовал эти шаблоны URL, в следующем порядке:

^ admin / doc /
^ admin /
ТекущийURL, не соответствует ни одному из них.

Независимо от того, на какую страницу моего приложения я перехожу под nginx, всегда отображается одно и то же сообщение об ошибке: «Текущий URL,не соответствует ни одному из них. "

В nginx, если я просто зайду на blah.youtrain.me URL запроса выше изменится на: blah.youtrain.me// <--- обратите внимание на конечный слеш,Однако в runserver в строке запроса URL отсутствует косая черта.Это может дать некоторое представление? </p>

Любая помощь будет принята с благодарностью!:)

Вот мой конфиг nginx для этого сайта:

server
{
listen 80;
server_name blah.youtrain.me;
access_log /home/ytmadmin/public_html/blah.youtrain.me/log/access.log;
error_log /home/ytmadmin/public_html/blah.youtrain.me/log/error.log debug;
# переписать правило- файлы
расположение ~ *. +.> (xml | jpg | jpeg | gif | png | ico | css | zip | tgz | gz | rar | bz2 | doc | xls | exe | pdf | ppt | txt | tar| mid | midi | wav | bmp | rtf | js | swf)
{
access_log off;
истекает 30d;
break;
}
# запросов Python
местоположение/
{
fastcgi_pass 127.0.0.1:8010;
fastcgi_pass_header Авторизация;
fastcgi_intercept_errors off;
include / usr / local / nginx / conf / fastcgi_params;
}
}

И мои urls.py

из django.conf.urls.defaults шаблоны импорта, включают: url

из django.contribимпорт admin
admin.autodiscover ()

urlpatterns = Patterns ('',
(r '^ $'), 'main.views.index'),
(r '^ admin / doc /', include ('django.contrib.admindocs.urls')),

# Раскомментируйте следующую строку, чтобы включитьАдминистратор:
(r '^ admin /', включая (admin.site.urls)),
)

1 Ответ

3 голосов
/ 15 октября 2011

Я нашел решение здесь: https://serverfault.com/questions/134863/nginx-fastcgi-problems-with-django-double-slashes-in-url

В nginx мне пришлось удалить следующую строку из моего файла nginx / conf / fastcgi_params, и все было хорошо:

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

...