走啊走
加油

vue一个服务器上可以部署两个web项目吗?

服务器价格表

是的,一个服务器上完全可以部署两个 Vue Web 项目。Vue 项目本质上是静态文件(HTML、CSS、JS),只要通过合适的配置,就可以在同一台服务器上运行多个项目。

以下是几种常见的实现方式:


✅ 方法一:使用 Nginx 反向X_X + 不同路径(子路径部署)

将两个 Vue 项目部署在同一个域名下的不同路径,例如:

  • https://example.com/app1/
  • https://example.com/app2/

步骤:

  1. 构建第一个 Vue 项目时,在 vue.config.js 中设置 publicPath
    // vue.config.js (app1)
    module.exports = {
     publicPath: '/app1/'
    }
  2. 构建第二个项目:
    // vue.config.js (app2)
    module.exports = {
     publicPath: '/app2/'
    }
  3. 构建后分别输出到不同目录,如 dist-app1, dist-app2
  4. 配置 Nginx:

    server {
       listen 80;
       server_name example.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;
       }
    }

⚠️ 注意:使用 aliastry_files 来支持 Vue Router 的 history 模式。


✅ 方法二:使用不同端口(本地开发常用)

每个 Vue 项目启动在不同的端口上,比如:

  • http://localhost:8080 → 项目1
  • http://localhost:8081 → 项目2

部署方式:

  • 使用 Node.js 服务(如 serve)分别启动:

    # 项目1
    npx serve -s dist-app1 -p 8080
    
    # 项目2
    npx serve -s dist-app2 -p 8081

然后可以通过 Nginx 做反向X_X或直接访问对应端口。


✅ 方法三:使用不同域名或子域名(推荐生产环境)

通过 DNS 和 Nginx 配置不同子域名指向不同项目:

  • app1.example.com → 项目1
  • app2.example.com → 项目2

Nginx 配置示例:

server {
    listen 80;
    server_name app1.example.com;

    root /var/www/app1;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name app2.example.com;

    root /var/www/app2;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

✅ 方法四:使用 Docker 隔离部署(高级推荐)

用 Docker 容器分别运行两个 Vue 项目,互不干扰:

# Dockerfile for app1
FROM nginx:alpine
COPY dist-app1 /usr/share/nginx/html/app1
COPY nginx.conf /etc/nginx/nginx.conf

然后通过 Docker Compose 或 Kubernetes 管理多个容器。


总结

方式 适用场景 是否推荐
不同路径(/app1, /app2) 同一域名下多项目 ✅ 推荐
不同端口 开发测试
不同子域名 多项目独立访问 ✅✅ 强烈推荐
Docker 部署 微服务架构 ✅✅✅ 最佳实践

注意事项:

  • 如果使用 Vue Router 的 history 模式,必须配置服务器 try_files 正确回退到 index.html
  • 构建时注意 publicPath 设置。
  • 静态资源路径不要冲突。

如有具体需求(如是否共用 API、是否需要鉴权等),可以进一步优化部署方案。欢迎补充细节!