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

在子目录部署Django:链接缺失mysite前缀的统一解决方法

问题背景

目录结构

C:\htdocs                                     # web根目录
   |_ django-container
      +- django-project
      |  +- core                              # startproject生成的项目根目录
      |  |_ myapp1                            # startapp生成的应用
      +- public
         +- static                            # STATIC_ROOT,collectstatic目标目录
         |  +- css
         |  +- images
         |  |_ js
         |_ media                             # MEDIA_ROOT

Nginx配置

http {
  # ...
  upstream wsgi-server {
    server 127.0.0.1:8080;
  }
  server {
    # ...
    location /mysite/ {
      proxy_pass http://wsgi-server/;
    }
    location /mysite/public/media/ {
      alias C:/htdocs/django-container/public/media/;
      autoindex off;
    }
    location /mysite/public/static/ {
      alias C:/htdocs/django-container/public/static/;
      autoindex off;
    }
  }
}

当前运行配置

  • 使用Waitress作为WSGI服务器,在8000端口运行,指向core.wsgi.application
  • Django配置:MEDIA_URL = 'public/media/',STATIC_URL = 'public/static/'

问题

应用内重定向、模板生成的URL均缺少mysite前缀,导致静态资源、媒体资源链接及页面跳转全部失效。希望找到统一自动添加mysite前缀的方案,而非手动修改STATIC_URL和MEDIA_URL。


解决方案

1. 设置FORCE_SCRIPT_NAME(核心步骤)

在Django项目的settings.py中添加以下配置:

FORCE_SCRIPT_NAME = '/mysite'

该配置会告知Django自身部署在/mysite路径下,所有通过Django生成的URL(包括{% url %}模板标签、reverse()函数、{% static %}/{% media %}标签生成的资源链接,以及应用内重定向地址)都会自动带上/mysite前缀,完全匹配Nginx的路由规则。

2. 验证Nginx配置(可选调整)

保持原有Nginx配置即可,location /mysite/会将请求前缀去掉后转发给Waitress,配合FORCE_SCRIPT_NAME即可正确解析请求和生成URL。

若遇到请求路径解析问题,可在Nginx的location /mysite/块中添加以下头信息,确保Django能正确识别请求前缀:

location /mysite/ {
  proxy_pass http://wsgi-server/;
  proxy_set_header X-Forwarded-Prefix /mysite;
}

通常仅设置FORCE_SCRIPT_NAME就足够解决问题。

3. 验证效果

重启Waitress服务和Nginx后:

  • 模板中{% static 'css/style.css' %}会生成/mysite/public/static/css/style.css,匹配Nginx的静态资源路由
  • 应用内重定向(如redirect(reverse('myapp1:index')))会生成/mysite/index/(对应URL配置)
  • 所有页面跳转和资源链接都会自动带上mysite前缀,无需手动修改任何URL配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:15:26