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

如何将域名请求直接转发至Django子应用而非项目?

解决方案:将域名根路径指向Django子应用

核心问题不在于WSGI或Gunicorn的工作目录配置,而是路由映射和Nginx反向代理规则的调整,下面是具体步骤:

1. 修改项目根路由文件(bjsite/urls.py)

把原来挂载子应用bj的路由从带前缀的路径改为根路径:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),  # 保留原有admin路由(如果需要)
    path('', include('bj.urls')),     # 将根路径映射到bj子应用的路由
]

注意:如果bj/urls.py里的路由本身带有bj前缀,需要去掉,比如把path('bj/', views.home)改成path('', views.home),避免出现路径重复。

2. 调整Nginx站点配置

将Nginx的反向代理规则改为根路径转发,去掉原来的/bj后缀:

server {
    listen 80;
    server_name www.domain.de;

    # 静态文件转发(根据实际路径调整)
    location /static/ {
        root /path/to/your/django_project;
        expires 30d;
    }

    # 根路径请求转发到Gunicorn
    location / {
        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;
    }
}

如果你之前的Nginx配置是单独针对/bj路径的,需要删除或替换成上述根路径规则。

3. 确认Gunicorn配置正确性

你的WSGI_APPLICATION配置是正确的,无需修改。只需确保Gunicorn的工作目录指向项目根目录django_project,示例配置如下:

[Unit]
Description=Gunicorn service for django_project
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/path/to/your/django_project
ExecStart=/path/to/your/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 bjsite.wsgi:application

[Install]
WantedBy=multi-user.target

4. 重启服务生效

修改配置后,重启Gunicorn和Nginx使变更生效:

sudo systemctl restart gunicorn
sudo systemctl restart nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:00:14