多个vue项目部署到nginx服务器

38 篇文章 3 订阅


需求

同一个域名安装多个vue项目。

比如:域名为 https://domain.com + 后缀。那么通过不同的后缀就能去访问不同的项目地址。

https://domain.com,不加任何后缀,访问官网。

https://domain.com/admin,域名加上 /admin,就访问管理后台项。

https://domain.com/user,加上 /user,就访问用户端项目。

一、项目打包

需要注意的文件就两个。request.JS和vue.config.JS。

在env文件中设置VUE_APP_CONTEXT_PATH为/admin/

1.vue.config.js

module.exports = {
  // 部署生产环境和开发环境下的URL。
  // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
  // 例如 https://www.domain.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.domain.vip/admin/,则设置 baseUrl 为 /admin/。
  publicPath: process.env.VUE_APP_CONTEXT_PATH,//实际为/admin/
  // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
  outputDir: 'dist',
  // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
  assetsDir: 'static',
  ......
}

2.request.js文件

在router文件夹中index.js文件中修改base为 ‘/admin/’

export default new Router({
  base: process.env.VUE_APP_CONTEXT_PATH, //调整这里,路径跟publicPath保持一致即可
  mode: 'history', // 去掉url中的#
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

3.打包

1.执行npm run build。可能不一定为build,具体执行命令看package.json的下面这个字段 。

在这里插入图片描述

调整完毕后,直接执行build打包命令,可以发现index.html引入js路径增加了/admin

<script src=/admin/static/js/chunk-libs.c52f1d1f.js></script>
<script src=/admin/static/js/app.15183e6d.js></script>

2.将打包好的文件上传到服务器,一般存在于dist文件夹,具体文件夹位置看命令行的提示。
在这里插入图片描述

在服务器上找个文件夹直接丢上去。/www/wwwroot/XXXXXX(项目总域名名字)/app/XXXXX(单个项目名字)。不喜欢可自行发挥,尽量保证这些项目在同一文件下。

二、nginx配置

nginx配置服务,使不同请求地址,去找相应的项目。

我这里使用的宝塔部署(图省事)自己部署也是一样的。

server
{
    listen 80;
    server_name 这里填写你的域名;
    #重定向某个地址
 # 这个是第一个vue项目 页面访问地址 http://域名/
    location / {
        return 302 /admin/select;#我这里是重定向到/admin项目的select页面
    }
#正常部署第一个项目
    # 这个是第一个vue项目 页面访问地址 http://域名/
    location / {
         root   /www/wwwroot//dist;
         index  index.html;
         try_files $uri $uri/ /index.html;
    }

     # 这个是第二个vue项目 页面访问地址 http://域名/admin
    location /admin {
        alias /www/wwwroot/admin/dist;#这里是你的代码地址
        try_files $uri $uri/ /admin/index.html; #解决刷新404 这里的/admin和 location /admin 必须一致
    }
 # 这个是第三个vue项目 页面访问地址 http://ip:9001/user
    location /user {
        alias /www/wwwroot/user/dist;#这里是你的代码地址
        try_files $uri $uri/ /user/index.html; #解决刷新404 这里的/user和 location /user 必须一致
    }
    # 转发以 /prod-api 开头的请求到后端
    location /prod-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
    }
}

注意:如果页面中有二级路由的话,配置文件中一定不能用root,要用alias.

注意如果你也如果配置文件中有一下内容请注释

    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }

    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Nginx上部署多个Vue项目,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Nginx。如果尚未安装,请根据你的操作系统的要求进行安装。 2. 在Nginx的配置文件夹中创建一个新的配置文件,比如 `/etc/nginx/conf.d`。在该文件夹中创建一个名为 `myproject.conf` 的文件,用于配置你的项目。 3. 打开 `myproject.conf` 文件,并输入以下内容: ``` server { listen 80; server_name your_domain.com; // 替换为你的域名或IP地址 location /project1 { alias /path/to/project1/dist; // 替换为第一个Vue项目的dist目录路径 try_files $uri $uri/ /project1/index.html; } location /project2 { alias /path/to/project2/dist; // 替换为第二个Vue项目的dist目录路径 try_files $uri $uri/ /project2/index.html; } // 可以继续添加其他项目的配置 error_page 404 /index.html; } ``` 上述配置中,我们使用了 `alias` 指令将每个项目的 `dist` 目录映射到对应的路径。`try_files` 指令用于处理路由请求,确保能够正确访问到每个Vue项目的路由。 4. 保存并关闭文件。 5. 检查配置文件是否存在语法错误:执行 `nginx -t` 命令。 6. 如果没有错误,重新加载Nginx配置文件:执行 `sudo service nginx reload`(根据你的操作系统和Nginx安装方式可能会有所不同)。 7. 确保你的域名或IP地址正确解析到服务器,并尝试访问 `http://your_domain.com/project1` 和 `http://your_domain.com/project2`,应该能够分别访问到两个Vue项目。 按照上述步骤,你可以配置Nginx来部署多个Vue项目。你可以根据需要添加更多的项目配置。在配置完成后,确保每个项目的 `dist` 目录已经构建并位于正确的路径上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值