我使用Nginx + supervisord在SSL后面托管一个django网站。网站索引加载正常。没有使用本地服务器的HTTPS,本地一切工作正常。我使用Django 1.4.2通过https形式的django表单重定向问题
出于某种原因,我得到奇怪的重定向。
使用管理员时,如果我编辑任何项目,我会重定向到主页。 当提交新项目保存我得到404(但数据被保存)。
非管理员: 再次提交表单回报我的主页,而不是“成功”。
去主页的原因我可以解释。我的nginx将所有非HTTP流量重定向到具有301重定向的https://localhost
。所以我猜django不认为我需要安全的URL在地方。
问题是Django是不能假设的安全网址或者说 request.is_secure是假。
我已经注意到了这个SO 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的。
最近我们在机器上遇到了同样的问题。我们将nginx与fastcgi_pass结合使用。 设置fastcgi_param HTTPS;在位置明确地为我们做了诡计。 – phi 2016-07-11 12:17:11
@phi fastcgi也许是更好的方式去与nginx和我upvoting所以谷歌可以使用你的方法fastcgi – Vangel 2016-07-17 11:17:55