我正在使用Nginx + supervisord来托管SSL背后的django网站。网站索引加载正常。使用本地服务器在没有HTTPS的情况下本地一切正常。我正在使用Django 1.4.2
出于某种原因,我得到了奇怪的重定向。
当我使用admin时,如果我编辑任何项目,我会被重定向到主页。 提交保存新项目时,我得到404(但保存数据)。
非管理员: 再次表单提交将我返回主页而不是“成功”。
去主页的原因我可以解释一下。我的nginx使用301重定向将所有非http流量重定向到https://localhost
。所以我猜django并不认为我需要安全的URL。
问题是django没有假设安全网址或者更确切地说 request.is_secure为False。
我注意到了这一点 Accessing Django Admin over HTTPS behind Nginx 对代理传递进行了更改,我不认为它可以解决这个问题。但现在就是这样。
settings.py
SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True
警告:我是django的新手。
答案 0 :(得分:1)
我删除了Nginx重定向。 Django已经正确处理了重定向。 这是我与nginx代理传递一起使用的settings.py值
SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True
Nginx代理
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
}
其中localhost:8000是gunicorn运行的地方。
我还有其他问题,但重定向问题已解决。