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

Nginx反向代理下Django子目录部署?next=跳转路径错误如何解决

Django子目录反向代理部署重定向问题解决方案

1. Django 配置调整

修改项目settings.py文件,添加以下配置:

  • 声明服务挂载的子目录前缀,强制Django生成所有URL时自动携带该前缀:
    FORCE_SCRIPT_NAME = '/myapp'
    
  • 开启反向代理请求头识别,避免域名、访问协议识别错误:
    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
  • 调整登录登出相关默认路径,无需手动加前缀,Django会自动补全配置的子目录:
    LOGIN_URL = '/accounts/login/'
    LOGOUT_REDIRECT_URL = '/'
    

2. Nginx 反向代理配置调整

确保反向代理传递正确的请求头,同时路径重写规则正确,示例配置如下:

location /myapp/ {
    # 替换为你的Django服务实际监听地址和端口
    proxy_pass http://127.0.0.1:8000/;
    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;
    # 传递子目录前缀给Django,和FORCE_SCRIPT_NAME配置对应
    proxy_set_header SCRIPT_NAME /myapp;
}

注意proxy_pass末尾的斜杠不能省略,该配置会自动把请求路径中/myapp/前缀剥离后再转发给Django服务,Django内部路由无需额外处理该前缀。

3. 生效验证

修改完成后重启Django服务和Nginx服务,再次访问需要登录鉴权的页面,生成的重定向链接会自动以https://www.example.com/myapp为根路径,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:04