是的,在一个服务器上可以部署两个 Vue Web 项目,这是非常常见且完全可行的操作。关键在于如何配置服务器(如 Nginx)来正确地路由请求到不同的项目。
以下是几种常见的部署方式:
✅ 方法一:使用不同端口访问(简单但不常用)
- 将两个 Vue 项目分别打包后,部署在同一个服务器的不同端口上。
- 例如:
- 项目 A:
http://your-server.com:8080 - 项目 B:
http://your-server.com:8081
- 项目 A:
缺点:需要暴露端口号,用户体验不好。
✅ 方法二:使用 Nginx 反向 + 不同路径(推荐)
将两个项目部署在同一个域名下,通过不同的路径区分。
例如:
- 项目 A:
https://example.com/app1/ - 项目 B:
https://example.com/app2/
步骤如下:
-
构建两个 Vue 项目
在
vue.config.js中设置publicPath(或base,Vue CLI 3+):// vue.config.js for 项目A module.exports = { publicPath: '/app1/', outputDir: 'dist_app1' }// vue.config.js for 项目B module.exports = { publicPath: '/app2/', outputDir: 'dist_app2' }然后分别执行:
npm run build -
上传到服务器指定目录
/var/www/app1/ /var/www/app2/ -
配置 Nginx
server { listen 80; server_name your-domain.com; location /app1/ { alias /var/www/app1/; try_files $uri $uri/ /app1/index.html; } location /app2/ { alias /var/www/app2/; try_files $uri $uri/ /app2/index.html; } # 根路径可跳转或指向其中一个 location / { return 301 /app1/; } } -
重启 Nginx
sudo nginx -t sudo systemctl reload nginx
✅ 方法三:使用不同子域名
- 项目 A:
app1.example.com - 项目 B:
app2.example.com
Nginx 配置多个 server 块即可,每个子域名指向不同的静态文件目录。
server {
listen 80;
server_name app1.example.com;
location / {
root /var/www/app1;
index index.html;
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name app2.example.com;
location / {
root /var/www/app2;
index index.html;
try_files $uri $uri/ /index.html;
}
}
⚠️ 注意事项
-
Vue Router 模式
如果使用history模式,必须配置 Nginx 的try_files,否则刷新页面会 404。 -
静态资源路径
确保publicPath设置正确,避免资源加载失败。 -
权限和防火墙
确保文件夹有读取权限,防火墙开放 80/443 端口。 -
HTTPS
生产环境建议使用 Let’s Encrypt 配置 SSL。
总结
| 方式 | 优点 | 适用场景 |
|---|---|---|
| 不同端口 | 简单 | 测试环境 |
| 不同路径(/app1, /app2) | 同一域名,结构清晰 | 多个管理后台 |
| 不同子域名 | 更独立,SEO友好 | 多个独立应用 |
✅ 推荐使用 Nginx + 路径或子域名 的方式部署多个 Vue 项目。
如有具体需求(比如是否用 Docker、是否有后端 API),可以进一步优化方案。
ECLOUD博客