You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker+Django+Nginx环境下/admin页面返回HTTP 302无法访问

问题原因及解决方案

核心原因

访问/admin/返回302但页面无法打开,本质是反向代理未传递正确请求头,导致Django生成的重定向URL指向容器内部不可达地址。

正常情况下,Django会将/admin/重定向到/admin/login/,但由于Nginx配置缺少必要代理头,Django无法识别用户实际访问的127.0.0.1,而是用容器内部服务名sinag_api:8000生成重定向地址。浏览器收到http://sinag_api:8000/admin/login/后,因宿主机无法解析该内部地址,导致页面无法打开。

解决步骤

1. 修改Nginx的default.conf配置

在location /块中添加代理请求头,确保Django获取正确请求信息:

upstream api {
    server sinag_api:8000;
}

server {
    listen 80;

    location / {
        proxy_pass http://api;
        # 添加以下代理头
        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;
    }

    location /static/ {
        alias /static/;
    }
}

2. 修改Django的settings.py配置

添加配置让Django信任反向代理传递的头信息:

# 允许Django使用反向代理传递的Host头
USE_X_FORWARDED_HOST = True

# 若后续升级HTTPS,需添加以下配置:
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

3. 重启服务

执行命令让配置生效:

docker-compose down && docker-compose up -d

验证

重新访问127.0.0.1/admin/,此时Django会生成正确的重定向URL(http://127.0.0.1/admin/login/),浏览器可正常跳转至登录页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:53:11