我正在使用 Nginx + supervisord 在 SSL 后面托管一个 django 站点。站点索引加载正常。没有使用本地服务器的 HTTPS,本地一切都可以正常工作。我正在使用 Django 1.4.2
出于某种原因,我得到了奇怪的重定向。
使用管理员时,如果我编辑任何项目,我会被重定向到主页。提交新项目进行保存时,我得到 404(但数据已保存)。
非管理员:再次提交表单将我返回到主页而不是“成功”。
去主页的原因我可以解释。https://localhost
我的 nginx使用 301 重定向将所有非 http 流量重定向到。所以我猜 django 认为我不需要在某些地方使用安全 URL。
问题是 django 没有假设安全 url 或者 request.is_secure 是 False。
我已经注意到这个 SO Accessing Django Admin over HTTPS behind Nginx Made the changes for proxy pass,我认为它没有做任何事情来处理这个问题。但这里就是这样。
设置.py
SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
CSRF_COOKIE_SECURE = True
警告:我对 Django 相当陌生。