在宝塔面板中部署 Vue 项目打包后的 dist 文件作为前端

在宝塔面板中部署 Vue 项目打包后的 dist 文件作为前端,通常有以下两种常见方式。你可以根据你的实际需求选择:


✅ 方式一:使用 Nginx 站点直接托管静态文件(推荐)

适用于前后端分离架构,前端纯静态资源,后端 API 通过反向代理或跨域调用。

步骤如下:
  1. 打包 Vue 项目

    bash 复制代码
    npm run build

    会在项目根目录生成 dist 文件夹。

  2. 登录宝塔面板 → 网站 → 添加站点

    • 域名:填写你的前端访问域名(如 web.yourdomain.com
    • 根目录:建议设置为 /www/wwwroot/web.yourdomain.com
  3. 上传 dist 文件到该站点根目录

    • 可通过宝塔的「文件」功能上传并解压
    • 或使用 SFTP 工具(如 WinSCP、FileZilla)上传
    • 确保 dist 中的内容(如 index.html, js/, css/)直接放在网站根目录下
  4. 配置 Nginx(通常默认即可,但需注意 history 模式)

    如果你 Vue Router 使用的是 history 模式,需要添加以下伪静态规则(否则刷新页面会 404):

    nginx 复制代码
    location / {
        try_files $uri $uri/ /index.html;
    }

    在宝塔面板中:

    • 进入该站点 → 「配置文件」或「伪静态」
    • 添加上述代码(放在 server {} 块内)
  5. 确保后端 API 可跨域访问(开发阶段)

    • 生产环境建议前端通过 Nginx 反向代理 API 请求,避免跨域
    • 或在 Spring Boot 后端配置 CORS(仅临时方案)

✅ 方式二:通过 Nginx 反向代理 + 静态资源混合(进阶)

如果你希望用同一个域名同时提供前端页面和后端 API(例如:https://yourdomain.com/ 访问前端,https://yourdomain.com/api/... 调用后端),可以这样配置:

Nginx 配置示例:
nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;
    root /www/wwwroot/yourdomain.com;  # 放 dist 的地方
    index index.html;

    # 静态资源
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 代理 API 到 Spring Boot(假设后端运行在 8080 端口)
    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

💡 注意:Spring Boot 应用需监听 0.0.0.0:8080(或你指定的端口),且防火墙/安全组允许本地回环访问。


🔒 补充建议

  • HTTPS:在宝塔中可一键申请 Let's Encrypt 证书,提升安全性。
  • 缓存优化 :可在 Nginx 中为 js/css 设置长期缓存。
  • 部署自动化 :可结合 CI/CD(如 GitHub Actions + rsync)自动更新 dist

如果你已经有一个 Spring Boot 项目在运行(比如通过宝塔的「Java 项目」管理器启动),只需确保前端 dist 由 Nginx 托管,并正确处理路由和 API 代理即可。

相关推荐
毛骗导演4 小时前
OpenClaw Gateway RPC 运行时:一个 WebSocket 协议引擎的深度解剖
前端·架构
码路飞4 小时前
不会 Rust 也能玩 WebAssembly:3 个 npm install 就能用的 WASM 神器
前端·javascript·webassembly
Sylus_sui4 小时前
鸿蒙Class实战:从零构建联系人列表
javascript
sudo_jin4 小时前
从“输入网址”到“帧级控制”:我对事件循环与主线程管理的终极认知
前端·javascript
flyfox4 小时前
Kiro AI IDE 深度使用指南:从入门到高效开发
前端·人工智能·ai编程
lovingsoft4 小时前
Cursor Skills 实战教程:解锁AI编码效率,附多场景案例
前端·人工智能
Irene19914 小时前
JavaScript中内置对象分类总结
javascript·内置对象
小凡同志4 小时前
React vs Vue:两种前端架构哲学的深度解析
前端·vue.js
miss4 小时前
Vue2 老项目上 TS?这 10 个坑我替你踩了,附完整迁移方案
前端