2012-08-13 27 views
8

Tengo django corriendo en uwsgi detrás de nginx. Cuando intento acceder al https://site/admin/, aparece la pantalla de inicio de sesión esperada. Iniciar sesión a través del formulario parece tener éxito, sin embargo, simplemente termino de regreso en la pantalla de inicio de sesión. Firebug muestra una redirección a la url http://site/admin/ llana que luego se redirige por nginx a la URL https.Acceso a Django Admin sobre HTTPS detrás de Nginx

¡Ayuda! Estoy confundido sobre cómo forzar a la aplicación de administración a usar solo URL de https.

Nota esto parece ser una pregunta sin respuesta relacionada: https://example.com/admin redirects to https://admin in Django Nginx and gunicorn

Respuesta

9

Agregando lo siguiente a nginx.conf resuelto el problema para mí.

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

Además de agregar lo siguiente a settings.py:

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

Utilice 'proxy_set_header X-Forwarded-Protocol $ scheme' en nginx.conf si usa' proxy_pass' y no uwsgi. –

2

la siguiente debe ser todo lo que necesita tener todo el tráfico a la aplicación de administración redirigido a https

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

Si eso no funciona, ¿puedes publicar tus bits de configuración de nginx reales? Realmente no puedo sugerir más que sin su configuración actual para mirar.

+0

Buena idea, aunque terminé haciendo que funcionara de manera diferente. – justinzane

+0

realmente no funciona para solicitudes POST. especialmente para cualquier devolución de llamada API. – Antigluk

0

Actualización para Django 1.8 settings.py:

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

Y para su plataforma Desarrollos es posible que desee sobrescribir SECURE_SSL_REDIRECT = False en tu configuración local.

Cuestiones relacionadas