2012-08-13 3 views
8

장고는 nginx 뒤의 uwsgi에서 실행 중입니다. https://site/admin/에 액세스하려고하면 예상되는 로그인 화면이 나타납니다. 양식을 통한 로그인은 성공한 것처럼 보이지만 간단히 로그인 화면으로 돌아갑니다. Firebug는 일반 http://site/admin/ url로 리다이렉트 한 다음 nginx에 의해 https url로 redirectec됩니다.Nginx 뒤에서 HTTPS를 통해 장고 관리자에 액세스

도움말! 관리자 앱이 https URL 만 사용하도록하는 방법에 대해 혼란 스럽습니다. https://example.com/admin redirects to https://admin in Django Nginx and gunicorn

답변

9

다음을 nginx.conf에 추가하면 문제가 해결되었습니다.

SESSION_COOKIE_SECURE = True 
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https') 
CSRF_COOKIE_SECURE = True 
+6

uginx가 아닌'proxy_pass'를 사용한다면 nginx.conf에서'proxy_set_header X-Forwarded-Protocol $ scheme'을 사용하십시오. –

2

다음 당신이 만약 HTTPS

location /site/admin/ { 
    rewrite^https://$host/$request_uri permanent; 
} 

로 리디렉션 관리자 응용 프로그램에 모든 트래픽을 가질 필요가 모든해야한다 :

참고이 관련, 답이없는 질문 것으로 보인다 작동하지 않습니다, 당신은 실제 nginx 설정 비트를 게시 할 수 있습니까? 보게 당신의 실제 설정 없이는 그 이상을 제안 할 수는 없습니다.

+0

좋은 생각이지만, 다르게 작동하게되었습니다. – justinzane

+0

은 POST 요청에 대해 실제로 작동하지 않습니다. 특히 모든 API 콜백에 유용합니다. – Antigluk

0

업데이트를 장고 1.8 settings.py에 대해 : 다음의 settings.py하려면 다음 추가와 함께

location/{ 
    ... 
    include     uwsgi_params; 
    uwsgi_param    HTTP_X_FORWARDED_PROTOCOL https; 
    uwsgi_param    UWSGI_SCHEME $scheme; 
} 

SESSION_COOKIE_SECURE = True 
CSRF_COOKIE_SECURE = True 
SECURE_SSL_REDIRECT = True 
SECURE_REDIRECT_EXEMPT = [r'^(?!admin/).*'] 

그리고 당신의 developement에 장비를 위해 당신은 SECURE_SSL_REDIRECT = False을 덮어 할 수 있습니다 귀하의 지역 설정에서.

관련 문제