You need to enable JavaScript to run this app. Django部署后admin输入正确凭据仍重定向回登录页如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Django部署后admin输入正确凭据仍重定向回登录页如何解决

Django admin登录后循环重定向问题排查方案

第一步:检查Django settings.py中的会话、安全相关配置

  • 确认CSRF_TRUSTED_ORIGINS配置包含你的站点域名/IP。Django 4.0+版本必须显式配置该参数,否则跨域提交的登录表单会被拦截,导致登录后会话不生效,示例配置:
# 用域名访问就填域名,用IP就填IP,注意带http/https前缀
CSRF_TRUSTED_ORIGINS = ['https://your-domain.com', 'http://your-droplet-ip']
  • 检查SESSION_COOKIE_SECURE、CSRF_COOKIE_SECURE配置。如果站点没有配置HTTPS但这两个参数设为True,浏览器不会发送Cookie到HTTP站点,会出现登录后会话丢失的情况。如果当前用HTTP访问,先把这两个值设为False,配置HTTPS后再改为True。
  • 确认SESSION_COOKIE_DOMAIN配置正确。如果填了不符合站点的域名,Cookie会被浏览器拒收,没有特殊需求可以直接注释掉该参数,让Django自动适配。

第二步:检查Nginx配置

  • 确认Nginx反向代理配置正确传递了请求头,尤其是Host和X-Forwarded-Proto头,缺少的话Django无法识别正确的请求来源,示例正确配置段:
location / {
    proxy_pass http://127.0.0.1:8000; # 替换为你gunicorn监听的地址端口
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
  • 检查Nginx是否存在错误的重定向规则,比如额外把/admin路径重定向到其他地址,可查看Nginx错误日志/var/log/nginx/error.log确认是否有相关报错。

第三步:检查Django代理头识别配置

在settings.py中添加以下配置,让Django信任Nginx传递的X-Forwarded-Proto头:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

如果没有该配置,即使Nginx传了协议头,Django也会默认认为请求是HTTP的,HTTPS站点下就会出现Cookie安全校验不通过的问题。

第四步:检查Gunicorn配置和运行状态

  • 确认Gunicorn启动的工作进程用户有权限读写Django的会话存储目录(默认是/tmp目录,如果配置了数据库/Redis存储会话就检查对应存储的权限和连接是否正常)。
  • 每次修改配置后都要重启Gunicorn服务,避免旧配置未生效。

验证规则

每修改一项配置后依次重启Gunicorn、Nginx,再用浏览器无痕模式访问站点测试,避免浏览器缓存旧Cookie导致测试结果不准。


内容的提问来源于stack exchange,提问作者Amit Sarje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 05:51:02