Django模板与React混合架构的AWS无特殊配置部署可行性咨询
混合架构(Django模板 + Django REST API + React)AWS部署配置要点
这种混合架构不能直接按纯API或纯模板项目部署,需要针对两种前端模式做适配配置,以下是核心要点:
1. 路由区分配置
得在Django的根urls.py里明确区分三类路由:
- 模板应用的路由:直接指向返回模板的视图(比如
path('dashboard/', views.dashboard_view)) - API路由:统一挂载到
/api/前缀下,比如path('api/', include('your_api_app.urls')),配合DRF的路由规则 - React入口路由:如果把React和Django部署在一起,可配置一个路由(比如
path('app/', views.react_entry)),这个视图返回React打包后的index.html;如果React单独部署,这部分路由由CloudFront/S3处理
2. 静态文件双场景处理
- Django模板的静态资源:按常规Django流程来,设置
STATIC_ROOT、STATIC_URL,部署前运行python manage.py collectstatic把所有静态文件收集到指定目录,然后让Nginx或AWS S3托管这些文件 - React静态资源:
- 若和Django同服务器:执行
npm run build打包React项目,把build目录里的文件复制到Django的static/react/目录下,通过STATIC_URL访问 - 若单独部署(推荐生产环境):把React打包文件传到S3桶,配置CloudFront做CDN加速,这样React直接从CDN加载,和Django API跨域通信
- 若和Django同服务器:执行
3. 跨域(CORS)必配
如果React和Django API不在同一域名(比如React在S3/CloudFront,Django在EC2),必须配置CORS:
- 安装
django-cors-headers,把它加到INSTALLED_APPS和MIDDLEWARE里 - 在
settings.py中指定允许的React域名:
生产环境别开CORS_ALLOWED_ORIGINS = [ "https://your-react-cloudfront-domain.com", "http://localhost:3000", # 开发环境保留 ]CORS_ALLOW_ALL_ORIGINS = True,风险太高
4. AWS部署方案选择
- 小型项目:单服务器部署
用Elastic Beanstalk或EC2部署整个Django项目,同时托管模板和React静态文件。配置Nginx反向代理:/api/路径转发给Gunicorn/UWSGI处理Django API/app/路径指向React静态文件目录- 模板路由直接由Django处理
- 生产环境:分离部署
- Django API部署到EC2/Elastic Beanstalk或ECS容器
- React静态文件放S3+CloudFront,配置CloudFront的行为规则,把
/api/*请求转发到Django服务器(或加一层API Gateway做流量管控) - 模板应用和API部署在一起即可,不用单独拆分
5. 生产环境必做检查
- 关闭
DEBUG = False,设置ALLOWED_HOSTS为实际部署的域名/IP - 数据库换成AWS RDS,别用本地SQLite
- 用AWS Certificate Manager申请SSL证书,强制所有请求走HTTPS
- 测试全流程:模板页面能正常渲染、React能调用API不报错、跨域请求正常
内容的提问来源于stack exchange,提问作者Hyung Do Kim
相关产品推荐
相关产品推荐

