是的,两个 Vue 项目完全可以部署在同一台服务器上。Vue 是一个前端框架,构建后生成的是静态文件(HTML、CSS、JS 等),这些文件可以通过任何支持静态资源服务的 Web 服务器(如 Nginx、Apache、Node.js 等)来提供服务。
以下是常见的几种部署方式:
✅ 方式一:使用 Nginx 部署多个 Vue 项目(推荐)
假设你有两个 Vue 项目:project-a 和 project-b
步骤:
- 分别构建项目:
# 进入 project-a 目录 npm run build # 输出到 dist/ 文件夹
进入 project-b 目录
npm run build
2. 将构建结果复制到服务器指定目录,例如:
- `/var/www/project-a`
- `/var/www/project-b`
3. 配置 Nginx 虚拟主机或路径路由:
#### 示例 1:通过不同域名访问
```nginx
server {
listen 80;
server_name project-a.com;
root /var/www/project-a;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name project-b.com;
root /var/www/project-b;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
示例 2:通过同一域名的不同路径访问
server {
listen 80;
server_name your-domain.com;
location /app1/ {
alias /var/www/project-a/;
try_files $uri $uri/ /app1/index.html;
}
location /app2/ {
alias /var/www/project-b/;
try_files $uri $uri/ /app2/index.html;
}
}
⚠️ 注意:如果使用子路径(如
/app1/),需要在 Vue 项目的vue.config.js中设置publicPath:// vue.config.js module.exports = { publicPath: '/app1/' // 对应 project-a }
✅ 方式二:使用 Node.js + Express 部署
你可以用一个 Express 服务同时托管多个静态目录:
const express = require('express');
const app = express();
app.use('/app1', express.static('path/to/project-a/dist'));
app.use('/app2', express.static('path/to/project-b/dist'));
app.get('*', (req, res) => {
res.status(404).send('Not Found');
});
app.listen(3000);
然后通过 http://your-server:3000/app1 和 http://your-server:3000/app2 访问。
✅ 方式三:使用 Docker 部署(更高级)
每个 Vue 项目打包成独立的 Docker 镜像,通过 Docker Compose 或 Nginx 反向X_X统一管理。
总结
| 方法 | 是否可行 | 说明 |
|---|---|---|
| Nginx 多域名 | ✅ 推荐 | 清晰隔离,适合生产 |
| Nginx 子路径 | ✅ 可行 | 需配置 publicPath |
| Express 托管 | ✅ 可行 | 灵活但性能略低 |
| Docker | ✅ 高级方案 | 适合微服务架构 |
✅ 结论:完全可以在一台服务器上部署多个 Vue 项目,只需合理规划路径、域名和构建配置即可。
如有具体需求(比如是否共用域名、是否有后端 API),可以进一步优化部署方案。
云小栈