解决vue打包一次部署到不同的服务器的问题

news2024/11/26 17:42:26

1. 问题描述

在工作的时候,往往碰到同一套vue前端代码程序需要部署到很多的服务器上,每次更改完程序都需要打包部署到各个服务器上,因为每个服务器的访问地址和端口都不一样,如果用的若依自带的框架,需要每次都需要打包好多个包,一个端口打一个,要是需要部署在10000个服务器,那么每天啥也不用干,写程序1小时,打包得两三天,要命了就,哈哈哈
解决这个问题的唯一途径就是打一次包,部署到不同的服务器上就可以,这样就省下很多打包的时间了。
这个问题解决完后,又出来了新的问题,websocket无法使用了,然后又要解决websocket的问题;还碰到了nginx配置的问题。

2. 若依自带的配置

2.1. vue.config.js中的配置

在这里插入图片描述

2.2. .env.production中的配置

在这里插入图片描述

2.3. 使用场景

在这里插入图片描述

3. 解决思路

3.1. 解决多次打包的思路和方案

将.env.production中的VUE_APP_BASE_API中的ip地址去掉,仅保留 / 和nodiot,具体保留的内容根据各自做的项目来定,主要是一个前缀,需要区别于其他的。
比如要访问一个接口,后台提供的接口地址为:http://192.172.0.59:9000/test/query,前端访问的时候是不能直接访问这个地址,因为会存在跨域,所以要做代理,上面写的若依中vue自带的配置.env.production中的VUE_APP_BASE_API可以配置成http://192.172.0.59:9000/test/,具体的配置如下图所示:
在这里插入图片描述
在这里插入图片描述
请求的接口,可以直接写“/query”。

vue.config.js配置中的target是目标地址,就是访问后端的实际的地址,.env.production中的VUE_APP_BASE_API是设置代理的地址,访问的时候找到匹配到的VUE_APP_BASE_API,然后将VUE_APP_BASE_API替换成target中的地址。

所以,解决多次打包的问题,只需要将VUE_APP_BASE_API中的ip和端口去掉就可以,其他地方不需要做任何的变化。
对应的,在nginx中配置的时候,也需要做更改,更改截图如下:

在这里插入图片描述

3.2. 解决websocket无法使用的问题

没有更改代理前的时候websocket的配置如下图所示:
在这里插入图片描述
更改后,因为process.env.VUE_APP_BASE_API中没有ip和端口了,而且还获取不到真实的转发地址,导致无法连接,所以就没法正常的连接websocket了,因为现在也不能再将后台的访问地址写死,所以这个问题就出现了。

3.2.1. 思路1(错误的)

一开始想到了一种解决方案,就是通过浏览器获取本地访问的ip,这样也可以实现,但是还是有问题,也是不能正常的连接。
在这里插入图片描述

3.2.2. 思路2(正确的)

后来又增加了一个webScoket的代理,通过代理的方式去实现,具体的思路如下:
(1)在vue.config.js中增加webScoket的代理,截图如下:
在这里插入图片描述
(2)在写webScoket的方法中更改

其中/wsProxy是代理的方法名,执行的时候能将/wsProxy替换成“http://192.172.0.59:9000/test”,wsProxy可以根据个人喜欢设置,只需要跟vue.config.js的名称保持一致就可以。

在这里插入图片描述

4、nginx的配置

4.1. windows环境的配置

server {

        #开启gzip
        gzip  on;  
        #低于1kb的资源不压缩 
        gzip_min_length 1k;
        #压缩级别1-9,越大压缩率越高,同时消耗cpu资源也越多,建议设置在5左右。 
        gzip_comp_level 5; 
        #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片.
        gzip_types application/json text/plain application/javascript application/x-javascript text/javascript text/xml text/css;  
        #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
        gzip_disable "MSIE [1-6]\.";  
        #是否添加“Vary: Accept-Encoding”响应头
        gzip_vary on;


        listen       8081;
        server_name  localhost;
   location / {
      root   html;
      index  index.html index.htm;
      try_files $uri $uri/ /index.html;
    }
        #反向代理
    location ^~ /test {
        proxy_pass http://192.172.0.59:9000/test;
    }
    #websocket
    location ^~ /wsProxy {
       proxy_pass http://192.172.0.59:9000/test;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

4.2. linux环境的配置

server{
    listen 10014;
    server_name localhost;
    index index.html index.htm;
    root /nodiot/nginx/html/liaocheng;
    
    location / {
      root   html/liaocheng;
      index  index.html index.htm;
      try_files $uri $uri/ /index.html;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ {
      expires 30d;
      # access_log off;
    }
    location ~ .*\.(js|css)?$ {
      expires 15d;
      #access_log off;
    }
    #反向代理
    location ^~ /test {
        proxy_pass http://192.172.0.59:9000/test;
    }
    #websocket
    location ^~ /wsProxy {
       proxy_pass 192.172.0.59:9000/test;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
    }

    access_log off;
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security --- 自定义登录逻辑

目录 UserDetailsService详解 返回值 方法参数 异常 PasswordEncoder密码解析器详解 接口介绍 内置解析器介绍 BCryptPasswordEncoder简介 代码演示 自定义登录逻辑 编写配置类 自定义逻辑 UserDetailsService详解 当什么也没有配置的时候,账号和密码是…

Vue3:计算属性、监听器

computed 计算属性 计算属性是指 基于现有状态派生 (演变) 出新的状态,现有状态发生变化,派生状态重新计算。 computed 接收回调函数作为参数,基于回调函数中使用的响应式数据进行计算属性的创建,回调函数的返回值就是基于现有状态…

软件测试什么样的技术栈才能进入大厂

我们知道,能在一线大厂工作是大多数人的目标,不仅薪酬高,技能提升快,而且能得到公司影响力背书,将来就算跳槽也能带来光环加持。 最近疫情的影响,网上也爆出了一些裁员新闻,可以说这个疫情确实…

【深入浅出密码学】RSA

RSA密码体制 引言: RSA加密的本意并不是为了取代对称密码,而且它比诸如AES的密码要慢很多,因为RSA当中涉及许多数学计算,RSA通常和类似AES的对称密码一起使用,真正用来加密大量数据的是对称密码。而RSA主要保护对称密…

Linux0.11内核源码解析-block_dev.c

目录 block_dev.c 文件的作用 int block_write(int dev, long * pos, char * buf, int count) block_dev.c 文件的作用 block_dev.c 文件的作用 block_dev.c 文件就包含两个函数,分别是block_read和block_write函数,提供给read和write系统调用 块读写…

STM32开发踩坑——基于CubeMx+Gcc移植正点原子3.5‘TFTLCD(开发环境:正点F103精英版+3.5‘TFTLCD)

成立这个专栏的目的是,记录自己嵌入式开发遇到的问题,与成功的解决方法,方便自己回顾。 最近在学习王维波老师的《STM32Cube高效开发教程》,王老师移植的是普中科技的驱动,而我手动移植了一下正点原子的lcd驱动&#…

【Java高级语法】(三)泛型:关于泛型最全面的讲解来了~

Java高级语法详解之泛型 :one: 概念:two: 优势:three: 使用3.1 泛型类3.2 泛型接口3.3 泛型方法 :four: 通配符(Wildcards)4.1 无界通配符(Unbounded Wildcard)4.2 上限通配符(Upper Bounded Wildcard)4.3 …

aardio - 【库】http访问网页

为了简化http访问操作,提高速度,丰富功能,特封装了此库,可以根据需要进行选择。 本库带一个dll,所以建议优先选择使用 inet.http 库: 如果使用 inet.http库,直接 inet.http.get() 速度较慢。 大…

理解3ds max中的容器的概念

实验一: 在场景中创建一个容器 把这个容器保存为一个文件,在文件夹中可看到此容器文件,其大小为892KB,同时可看到生成一个同名的lock类型文件。 将场景中的某一个物体(面加多一点的)添加到容器中&#x…

框架---面经

Spring 循环依赖 概念 多个实体之间相互依赖并形成闭环的情况就叫做"循环依赖”,也叫做”循环引用。 三级缓存解决循环依赖的原理 循环依赖的解决方案--- Feild注入单例(AutoWired) 直接在类的成员变量上使用Autowired注解&#xf…

SM2椭圆曲线公钥密码算法

国家密码管理局于2010年12月17日发布了SM2椭圆曲线公钥密码算法,并要求为对现有基于RSA算法的电子认证系统、密钥管理系统、应用系统进行升级改造。关于算法标准,请参见《国家密码管理局公告(第 21 号)》,网址为​​ht…

JavaWeb【总结】——(请求和响应)浏览器发送请求的方式 服务器响应的方式

本文目录 引出JavaWeb相关知识1.网页状态码web相关背景知识如何在idea中建tomcat web项目2.Web的请求request:get和post,响应response3.同步请求和异步请求Ajax,以及异步的Json响应4.同步jsp和异步ajax的axios下,转发或重定向思考…

【图片轮播】Vue如何实现移动端图片轮播效果,支持左右滑动(附图文及代码)

【写在前面】 日常生活中,其实我们是离不开手机查看相册的,尤其是图片的轮播展示,最近我就接到我家老大给出的需求,首先是从网上下载下来之前她做的图片,然后她就希望能够在自己手机上能随时查看,这不没办法…

Java使用OpenCV进行图像操作

OpenCV图像操作 OpenCV概述下载与安装目录说明项目集成验证 Mat类创建Mat对象其他操作 常见图像API读取与输出图像显示图像图像压缩和解压缩图像转换图像缩放亮度调整图像锐化图像梯度图像二值化边缘检测图像高斯模糊图像反色 OpenCV 概述 OpenCV(开源计算机视觉库…

2023互联网高级测试工程师至少具备的能力

业务熟悉 熟悉本系统 测试人员参与测试的系统的各种业务场景,必须做到精熟 。一旦需求有改动,可以清楚快速的知道上下文。同时可以清楚的知道哪些点是需要重点测试的。 熟悉跟本系统有通讯的上下游系统业务 跟本系统有通讯的上下游系统也要非常熟悉。这…

Exception in thread “main“ java.lang.UnsupportedClassVersionError 50报错处理

之间正常走jenkinsdocker自动化部署的项目,今天改了一个文件,点了一下,竟然没有部署上去,提示如上,如下 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/coocaa/tsp/sys/user/Use…

Web 自动化测试Selenium 之PO 模型

目录 1. po 模型介绍 2. PageObject 设计模式 3. PO 的核心要素 4. 非PO 实现 5. PO 实现 6. 总结 7. PO 模式的特点 总结: 1. po 模型介绍 在自动化中,Selenium 自动化测试中有一个名字经常被提及 PageObject (思想与面向对象的特征相同)&#x…

【改进算法】混合鲸鱼WOA和BAT算法(Matlab代码实现)​

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python键盘监听:实现快捷操作和自动化脚本(监听组合键

前言 本文主要介绍一下使用Python进行事件监听功能,以实现一些特有的操作。本文旨在介绍如何实现这一功能。 笔者根据一些需求写了一个小工具,流程和功能如下图所示(实际功能有更多): 该工具主要实现了 键盘监听 和 鼠…

从Linux源码看TIME_WAIT状态的持续时间

前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。 首先介绍下Linux环境 TIME_WAIT这个参数通常和五…