2012-08-13 23 views
8

nginx'in arkasında uwsgi'de çalışan django'm var. https://site/admin/ erişmeye çalıştığımda, beklenen giriş ekranını alıyorum. Ancak form aracılığıyla giriş yapmak başarılı görünüyor, ancak ben sadece giriş ekranına geri dönüyorum. Firebug, http://site/admin/ URL'sine giden bir yönlendirmeyi gösterir, bu daha sonra nginx tarafından https url'ye yönlendirilir.Nginx'in arkasında HTTPS üzerinden Django Yöneticisi'ne erişme

Yardım! Yönetici uygulamasını yalnızca https URL'leri kullanmaya zorlamak konusunda kafam karıştı. https://example.com/admin redirects to https://admin in Django Nginx and gunicorn

cevap

9

Aşağıdakileri nginx.conf dosyasına eklemek benim için sorunu çözdü.

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

"proxy_pass" ve uwsgi kullanılmıyorsa nginx.conf dosyasındaki 'proxy_set_header X Yönlendirmeli Protokol $ şemasını kullanın. –

2

aşağıdaki o takdirde https

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

yönlendirildi yönetici uygulaması tüm trafiği olması gereken tüm olmalıdır:

Not bu ilgili, cevaplanmamış soru gibi görünüyor çalışmıyor, gerçek nginx yapılandırma bitlerini gönderir misiniz? Asıl yapılandırmanıza bakmaksızın gerçekten daha fazla öneride bulunamazsınız.

+0

İyi bir fikir, her ne kadar farklı şekilde çalışmaya başladım. – justinzane

+0

POST istekleri için gerçekten işe yaramaz. özellikle herhangi bir API geri çağrısı için. – Antigluk

0

Güncelleme Django 1.8 settings.py için: settings.py için aşağıdaki ekleyerek birlikte

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/).*'] 

Ve developement teçhizat için size SECURE_SSL_REDIRECT = False üzerine yazmak isteyebilirsiniz yerel ayarlarınızda.

İlgili konular