Accéder à Django Admin via HTTPS derrière Nginx

J’ai Django en cours d’exécution dans uwsgi derrière nginx. Lorsque j’essaie d’accéder à https://site/admin/ j’obtiens l’écran de connexion attendu. La connexion via le formulaire semble réussir, mais je me retrouve simplement à l’écran de connexion. Firebug affiche une redirection vers le http://site/admin/ url, qui est ensuite redirigé par nginx vers l’URL https.

Aidez-moi! Je suis confus quant à la façon de forcer l’application admin à utiliser uniquement les URL https.

Notez que cette question semble être sans réponse: https://example.com/admin redirige vers https: // admin dans Django Nginx et gunicorn

L’ajout de ce qui suit à nginx.conf a résolu le problème pour moi.

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

En plus d’append les éléments suivants à settings.py:

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

Ce qui suit devrait être tout ce dont vous avez besoin pour que tout le trafic vers l’application admin soit redirigé vers https

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

Si cela ne fonctionne pas, pouvez-vous poster vos bits de configuration nginx actuels? Vous ne pouvez pas vraiment suggérer plus que cela sans votre configuration réelle à regarder.

Mise à jour pour les parameters de Django 1.8.py:

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

Et pour votre plate-forme de développement, vous voudrez peut-être remplacer SECURE_SSL_REDIRECT = False dans vos parameters locaux.