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

能否用单个域名部署Django后端与多页面React前端?技术咨询

单个域名部署Django后端+多页面React前端的方案解析

1. 能否通过单个域名部署?可行,具体操作分两种常用方案:

方案一:反向代理(以Nginx为例)

这是生产环境最通用的方案,用Nginx作为统一入口,按路径转发请求到不同服务:

  • 先执行npm run build打包React项目,把生成的静态文件上传到服务器指定目录(比如/var/www/react-dist);
  • 用Gunicorn或uWSGI启动Django服务,让它运行在本地端口(如127.0.0.1:8000);
  • 配置Nginx,将根路径/的请求指向React静态文件,/api/路径的请求转发到Django服务。示例配置:
server {
    listen 443 ssl;
    server_name your-domain.com;
    # 此处添加SSL证书配置(生产环境必须启用HTTPS)

    # 处理React多页面请求:按实际页面路径匹配对应HTML文件
    location / {
        root /var/www/react-dist;
        try_files $uri $uri.html $uri/ /index.html;
    }

    # 转发Django API请求
    location /api/ {
        proxy_pass http://127.0.0.1:8000/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

方案二:Django直接托管React静态文件

如果不想额外配置反向代理,可以让Django同时处理API和前端资源:

  • 把React打包后的所有文件(各页面HTML、css、js等)放到Django的templates和static目录;
  • 修改Django的URL配置,让前端页面路径返回对应React HTML文件,/api/路径处理后端接口。示例urls.py:
from django.urls import path, include
from django.views.generic import TemplateView
from . import api_urls

urlpatterns = [
    # 挂载API路由
    path('api/', include(api_urls)),
    # 匹配多页面路径:比如/about返回about.html
    path('about/', TemplateView.as_view(template_name='about.html')),
    path('products/', TemplateView.as_view(template_name='products.html')),
    # 根路径返回首页
    path('', TemplateView.as_view(template_name='index.html')),
]
  • 注意:需在Django的settings.py中配置好TEMPLATES和STATIC_ROOT,确保能正确读取React的静态资源。

2. 后端API是否会暴露?

会暴露,但这是前端调用API的必然结果——前端需要通过域名下的API路径(如your-domain.com/api/user)发起请求,这些路径本身就是对外可见的。

不过可以通过以下方式降低安全风险:

  • 强制HTTPS:所有请求走HTTPS,避免API数据被明文窃取;
  • 添加认证机制:给API接口加上JWT、Session或OAuth2认证,确保只有合法用户能访问敏感接口;
  • 配置CORS:用django-cors-headers库设置CORS策略,只允许当前域名的前端请求访问API;
  • 请求限流:通过django-ratelimit或Nginx规则限制API请求频率,防止恶意攻击;
  • 隐藏敏感信息:API返回结果只包含前端需要的业务字段,绝不泄露数据库密码、密钥等敏感数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:50:55