我在dginx后面的uwsgi中运行了django。当我尝试访问https://site/admin/
时,我得到了预期的登录屏幕。通过表单登录似乎成功,但是,我只是回到登录屏幕。 Firebug显示重定向到普通http://site/admin/
网址,然后由nginx重定向到https网址。
帮助!我对如何强制管理员应用仅使用https网址感到困惑。
请注意,这似乎是一个相关的,未回答的问题:https://example.com/admin redirects to https://admin in Django Nginx and gunicorn
答案 0 :(得分:10)
在nginx.conf中添加以下内容为我解决了这个问题。
location / {
...
include uwsgi_params;
uwsgi_param HTTP_X_FORWARDED_PROTOCOL https;
uwsgi_param UWSGI_SCHEME $scheme;
}
将以下内容添加到settings.py:
SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True
答案 1 :(得分:2)
以下 应该只需将管理员应用的所有流量重定向到 HTTPS
location /site/admin/ {
rewrite ^ https://$host/$request_uri permanent;
}
如果这不起作用,你可以发布实际的nginx配置位吗?如果没有你的实际配置,那么无法真正建议更多。
答案 2 :(得分:0)
更新Django 1.8 settings.py:
removeIf
对于您的开发工具,您可能希望在本地设置中覆盖SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
SECURE_REDIRECT_EXEMPT = [r'^(?!admin/).*']
。