生产环境下如何同时部署使用Nuxt与Django?
部署方案选型参考
两种部署模式各有适用场景,你可以根据自己的项目规模、运维成本需求选择:
方案1:逻辑分离部署(绝大多数场景优先推荐)
- 架构逻辑清晰:Django纯作为后端服务只提供REST/GraphQL API接口,Nuxt独立负责SSR渲染、前端路由、静态资源承载,前后端完全解耦。后续不管是迭代前端功能还是调整后端接口都不会互相影响,扩容也更灵活,比如后期接口并发升高只需要给Django集群加节点,前端访问量上涨单独给Nuxt扩容即可。
- 成本可控:小流量项目完全可以把两个服务跑在同一台物理服务器上,用Nginx做反向代理,把
/api前缀的请求转发给Django服务(一般用Gunicorn/uWSGI托管),其他所有请求转发给Nuxt服务即可,相当于物理同服、逻辑分离,比拆到两台服务器更节省成本。 - 注意点:生产环境建议把跨域配置在Nginx层面,不需要修改Django的CORS配置就能避免跨域问题。
方案2:同服务耦合部署(仅特殊场景使用)
- 只适合访问量极低的个人测试项目,操作是把Nuxt build后的静态资源放到Django的static目录,SSR请求仍转发给Nuxt服务。这种架构维护成本极高,每次前端更新都要重新打包同步资源到Django目录,完全不适合迭代频繁的中大型项目。
同服务器部署最简实操步骤
- 服务器上分别安装Python、Node.js环境,独立配置Django虚拟环境和Nuxt运行依赖
- 用
Gunicorn启动Django服务,默认跑在本地端口例如127.0.0.1:8000 - 用
pm2托管Nuxt服务,默认跑在本地端口例如127.0.0.1:3000 - 配置Nginx反向代理规则即可对外提供服务:
server { listen 80; server_name 你的业务域名; # 接口请求转发给Django location /api/ { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 其他请求转发给Nuxt location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
内容的提问来源于stack exchange,提问作者C LALHMANGAIHA
相关产品推荐
相关产品推荐

