2013-09-30 10 views
5

Mam Django działającego za Nginxem z fastcgi_pass. Uruchomiłem Django na ścieżce podrzędnej, jak "/ django/sample".Django Admin + FORCE_SCRIPT_NAME + Nieprawidłowe przekierowania logowania

location /django/sample { 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:8025; 
} 

używam FORCE_SCRIPT_NAME w module ustawień Django, który wydaje się rozwiązać wszystkie problemy miałem w odniesieniu do niej działających w podścieżki.

w settings.py:

FORCE_SCRIPT_NAME = "/django/sample/" 

Idę tutaj, aby zalogować się z Administrator (a właściwie dostać UI administratora):

http://server/django/sample/admin 

Ale kiedy złożyć, to przekierowuje do:

http://server/django/sample/django/sample/admin 

Co jest naprawdę dziwne, że jeśli zmienię FORCE_SCRIPT_NAME = "" logowanie działa.

ale potem wszystkie linki na stronie administratora są/admin, nie/django/sample/admin/

co do cholery jestem brakuje? Ustawienie FORCE_SCRIPT_NAME = "/ django/sample /" wydaje się naprawić wszystko z wyjątkiem logowania administratora.

Wszelkie pomysły?

UPDATE:

Ja również próbowałem przy użyciu fastcgi_split_path_info w nginx conf (i wyjąć FORCE_SCRIPT_NAME w ustawieniach). Znowu to rozwiązuje wszystkie problemy z ścieżką, z wyjątkiem przekierowania logowania administratora.

conf tak:

location /django/sample { 
    fastcgi_split_path_info ^(/django/sample)(.*)$; 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:8025; 
} 

Odpowiedz

4

FYI, zrezygnowałem. Cała dokumentacja mówi, że powinno być łatwe. Ale radzenie sobie z tym zbyt wielkim bólem. Zamiast tego wymagam od naszych aplikacji Django korzystania z poddomeny i konfigurowania vhosta z serwerem. W ten sposób Django może działać na głównym katalogu "/"

+3

Wiem, że minęło kilka lat, ale mówię ci, że mam ten sam problem. To jest # $ * @ $ (! Wykonuję kilka testów na serwerze Development i działa to doskonale, ale jak tylko zostanie przeniesiony do produkcji, niektóre linki zaczynają się zepsuć, takie jak Redirects, co doprowadza mnie do szaleństwa. zostały lepiej rozwinięte. –