django LOGIN_REDIRECT_URL 在 nginx ssl 后面不工作

标签 django ssl nginx

站点的其余部分可以正常工作,但登录后的重定向是

http ://127.0.0.1:8443/after_login

不是预期的

https://127.0.0.1:8443/after_login

这会导致 nginx 错误:

400 错误请求 普通 HTTP 请求被发送到 HTTPS 端口

如何强制正确构建重定向链接?

环境信息:

Django 1.4.1

设置.py

LOGIN_REDIRECT_URL = reverse_lazy('after_login')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')

最佳答案

在我将 proxy_set_header X-Forwarded-Proto $scheme 添加到 nginx 的配置之前,它一直发生在我身上:

location / {
  proxy_pass http://unix:/path/to/your/gunicorn_socket;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

关于django LOGIN_REDIRECT_URL 在 nginx ssl 后面不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20124891/

相关文章:

python - 将上下文添加到每个 Django 管理页面

django - 如何在 django 1.3 中创建 DetailView?

django - 允许 CSRF_TRUSTED_ORIGINS django 中的所有 ip

objective-c - 使用 NSURLConnection 处理自签名证书

docker - 在Kubernetes/Nginx中为客户端设置正确的主机名

node.js - Nginx - 将所有内容重定向到特定端点

django - 在 {{ verbatim }} 和 {{endverbatim}} 内使用 django 模板标签

python - SSL 认证错误 > 主机名不匹配

android - 使用来自 AWS 服务器的自签名证书在 Android 上设置 HTTPS 连接

django - Docker 撰写 nginx 配置设置以在端口 8000 上广播