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

同一服务器同域名不同路径的两个Django应用重定向问题

解决Django应用反向代理后重定向丢失前缀的问题

Nginx配置优化(无需逐个页面配置)

把针对App2的零散配置替换成下面的统一规则,一次性覆盖所有子路径:

location /app2/ {
    proxy_pass http://localhost:9696/;
    # 传递真实请求的Host信息,让Django知晓外部访问域名
    proxy_set_header Host $host;
    # 传递真实客户端IP
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 传递请求协议(http/https),网站启用HTTPS时必须添加
    proxy_set_header X-Forwarded-Proto $scheme;
}

关键注意:proxy_pass结尾的/不能省略,它会让Nginx自动把/app2/后的路径拼接在localhost:9696/后面,比如访问website.com/app2/something时,实际转发到localhost:9696/something。

Django应用配置调整

修改App2的settings.py文件,添加以下配置,让Django生成URL时自动带上/app2前缀:

# 设置应用的代理前缀,对应Nginx的代理路径
FORCE_SCRIPT_NAME = '/app2'
# 允许Django使用反向代理传递的Host头
USE_X_FORWARDED_HOST = True
# 网站启用HTTPS时添加此配置(与Nginx的X-Forwarded-Proto对应)
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# 确保域名在允许列表内
ALLOWED_HOSTS = ['website.com', 'localhost']

修改后重启App2的Docker容器,Django生成的重定向URL就会自动带上/app2前缀,访问子页面时重定向将指向正确的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:37:05