关于vue3+niginx前端部署问题

news2025/1/19 14:38:28

曾经有人给我讲,所谓个人技术是死磕出来的,只有经过不断的试错和解决过程所有问题,以及不断变换思路去解决一件问题的过程,就是个人技术的成长。

最近在给自己搭建的小服务加一个bolg模块,在网上大概看了下轻量级的框架,最后使用vueQuill富文本编辑器 ,期间产生诸多问题,经过3天时间,基本解决,仅以此记录解决过程,给需要的人提供思路。

网站地址:TestManagePlatform

旧版的部署方式:

整个前端服务放到服务器,容器镜像打包,npm run serve 方式启动

niginx 配置 

map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}

server{
      listen       443 ssl;
      server_name    前端服务.top;
      ssl_certificate /etc/nginx/conf/8673314_datafactory.metaversed.top.pem;
      ssl_certificate_key /etc/nginx/conf/8673314_datafactory.metaversed.top.key;
      ssl_session_cache    shared:SSL:1m;
      ssl_session_timeout  5m;
      server_tokens off;
      fastcgi_param   HTTPS                  on;
      fastcgi_param   HTTP_SCHEME            https;
      access_log /var/log/nginx/access.logs;
    
      if ($host ~ "\d+\.\d+\.\d+\.\d") {
        return 404;
        }
      location / {
          proxy_pass         http://你的服务器本地地址:8000/;
          proxy_redirect     default;
          proxy_http_version 1.1;
        }
   }
server{
      listen       80;
      listen       443 ssl;
      server_name    后端服务.top;
      ssl_certificate /etc/nginx/conf/9374020_good.metaversed.top.pem;
      ssl_certificate_key /etc/nginx/conf/9374020_good.metaversed.top.key;
      server_tokens off;
      fastcgi_param   HTTPS                  on;
      fastcgi_param   HTTP_SCHEME            https;
      access_log /var/log/nginx/access.logs;

      if ($host ~ "\d+\.\d+\.\d+\.\d") {
        return 404;
        }
      location / {
          proxy_pass         http://你的服务器本地地址:8088/;
          proxy_redirect     default;
          proxy_http_version 1.1;
        }
   }

这个方式有很多问题

1、整体包内容比较大,加载时间长。

2、服务器环境npm install 时依赖包安装版本可能存在不一致情况,出现问题不好分析。

3、一些资源文件加载路径问题会导致服务启动不起来。

本次出现问题在于,本地调试完成后,由于引入

import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css'

服务器提示:找不到'@vueup/vue-quill' 和'@vueup/vue-quill/dist/vue-quill.snow.css'

由于是docker 先打镜像包,在启动docker-compose 文件,一开始怀疑是文件路径不识别。

折腾许久后,发现是镜像包没有把相关新增依赖加上。于是开始调试DockerFile 

FROM node
WORKDIR /root
COPY ./ .
RUN npm install 

最后发现npm install 依赖时候除了很多错。大概率都是依赖安装失败。

于是决定永久避开这个坑,采用静态文件方式部署前端

静态文件方式部署前端

1、前端vue.config.js 配置

module.exports = {
    lintOnSave:false,
// 这里一定一定记得配置为‘/’而非“./”
    publicPath:"/",
    devServer: {
        port:8000,
        proxy: {  //配置跨域
            '/api':{
                 target: 'http://127.0.0.1:8088/',  
                //这里后台的地址模拟的;应该填写你们真实的后台接口
                changeOrigin: true,   //允许跨域
                // ws: true, // proxy websockets
                pathRewrite: {
                    '^/api': ''
                },
                host: '0.0.0.0',
            }
        }
    }
}

2、打静态包dist 

npm run build

执行完成后项目多一个dist 包

 4、将整个包文件放入niginx 配置的index 入口目录下去,并更新niginx.config 文件

新的配置方式:

server {
        listen       80;
        listen       443 ssl;
        server_name  前端域名.top; #域名
        ssl_certificate /etc/nginx/conf/8673725_www.metaversed.top.pem;
        ssl_certificate_key /etc/nginx/conf/8673725_www.metaversed.top.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        fastcgi_param   HTTPS                  on;
        fastcgi_param   HTTP_SCHEME            https;
        access_log /var/log/nginx/access.logs;
    location / {
        root  /html;
        index  index.html index.htm; #默认访问的首页内容
        try_files $uri $uri/  @router; 
        }
    location @router {
       #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
       #因此需要rewrite到index.html中,然后交给路由在处理请求资源
       rewrite ^.*$ /index.html last;
       }
    location /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://服务器本地地址:8088/;
        }
}

root  /html;  这个文件下存放dist的内容,或者挂在到服务器 dist 具体的路径上。实时更新dist文件即可实现热部署。

其中 location / 配置前端入口,这里直接使用了服务器首页配置

try_files $uri $uri/  @router;  这个一定要配置,静态资源跳转全靠它

其中location /api/ 配置后端代理

proxy_pass         http://服务器本地地址:8088/;  #对应到你的后端服务地址

到此整个服务算是换了一个新的方式部署。

总结:

至于docker 容器化部署是出现的依赖包文件不存在问题,目前可以确认的是以为打包镜像失败导致。至于具体原因还没有找到。前端本就依赖过多,如果本地和线上无法保证依赖包一致或者复用的话,不如直接使用本地打出来的dist 包进行静态资源不熟。好处多多。

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

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

相关文章

发明专利写作模板和指导以及案例分析

文章目录 权利要求书说明书摘要摘要附图说明书技术领域背景技术发明内容附图说明具体实施方式 说明书附图 权利要求书 写作模板 1. 一种xxx方法,其特征在于,包括如下步骤:S1, (概况介绍第一步);S2, &#x…

“深入了解Spring框架:IOC、注入方式和与Web容器的整合“

目录 1. Spring框架简介2. Spring的IOC(控制反转)3. Spring的注入方式3.1 第一种:构造函数注入3.2 第二种:Setter方法注入3.3 第三种:注解注入按名称注入(byname):按类型注入&#x…

算法通关村第九关 | 二叉树查找和搜索树原理

1. 二分查找的扩展问题 1.1山脉数组的巅峰索引 LeetCode852:题目核心意思是在数组中,从0到i是递增的,从i1到数组最后是递减的,让你找到这个最高点。 三种情况: mid在上升阶段的时候,满足arr[mid] > a…

Docker容器与虚拟化技术:Docker容器操作、网络模式

目录 一、理论 1.Docker 容器操作 2.Docker 网络 二、实验 1.Docker 容器操作 2.Docker 网络 2.Docker 的网络模式 三、问题 1. 批量删除所有容器未生效 2.使用bridge模式指定IP运行docker报错 3.未显示bridge网络模式名称 四、总结 一、理论 1.Docker 容器操作 &a…

TVP助力数智化转型:数字物业与产业园区智慧化高质量发展

引言 数字化技术的蓬勃发展,为传统行业转型提供了前所未有的机遇。相较于早期的基础数字化,现如今数字化转型已逐步踏入更深层次。在各个领域,将数字技术与实际应用有机融合已日益显得迫切。如何在这一浪潮中巧妙融合数字技术与传统行业&…

cesium加载wms服务

成果图 源码 cesium加载不用像其他api一样加那么多参数,最终请求路径上发现他也是把那些参数都加上了,应该是有默认的参数吧 var wmsLayer new Cesium.WebMapServiceImageryProvider({url: http://你的地址/pjgeoserver/services/wms,layers: services…

Golang协程,通道详解

进程、线程以及并行、并发 关于进程和线程 进程(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一…

leetcode611. 有效三角形的个数(java)

有效三角形的个数 有效三角形的个数排序加二分排序 双指针 上期算法 有效三角形的个数 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使…

python进阶做题日记365-1,

第一天: 1:题目名称:代写匿名信时间限制:1000ms内存限制:256M 题目描述小Q想要匿名举报XX领导不务正业! 小Q害怕别人认出他的字迹。 他选择从报纸上剪裁下来英文字母组成自己的举报信。 现在小Q找来了报纸…

【分布式存储】数据存储和检索~倒排索引pageRank

为什么需要倒排索引 通过前两篇的文章介绍,B树主要针对的是读多写少的场景,而LSM针对的是写多读少的场景,其实在日常开发中,我们会将数据存储到搜索引擎中,然后进行数据的搜索,这种场景其实针对的是快速根…

AI幕后的关键技术之一——HBM

半导体产业步入下行周期之际,2023年ChatGPT的“走红”为产业带来新的发展方向:AI人工智能。 ChatGPT正掀起一场声势浩大的AI浪潮,AI时代下,为满足海量数据存储以及日益增长的繁重计算要求,半导体存储器领域也迎来新的变…

shell第九章iptables防火墙

防火墙:隔离功能 部署点:部署在网络边缘,或者主机边缘,在工作中,防火墙的主要作用,决定那些数据可以被外网访问,以及哪些数据可以进入内网访问 讨论防火墙,主要就是在网络层进行讨…

无涯教程-Perl - setsockopt函数

描述 此函数将SocketoptionsOPTNAME的值设置为SOCKET上指定级别的OPTVAL值。您需要导入Socket模块,以获取Tabl中显示的OPTNAME的有效值 语法 以下是此函数的简单语法- setsockopt SOCKET, LEVEL, OPTNAME, OPTVAL返回值 如果失败,此函数返回undef;如果成功,则返…

java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration

错误: java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfigurationat org.apache.hadoop.hive.ql.exec.tez.TezSessionPoolSession$AbstractTriggerValidator.startTriggerValidator(TezSessionPoolSession.java:74)at org.apache.hadoop.hive.ql.e…

数据集成革新:去中心化微服务集群的无限潜能

在当今数据密集型的业务环境下,传统的集中式架构已经难以满足高可用性和高并发性的要求。而去中心化微服务集群则通过分散式的架构,将系统划分为多个小型的、独立部署的微服务单元,每个微服务负责特定的业务功能,实现了系统的高度…

bytesec靶场

靶场下载 https://www.vulnhub.com/entry/hacknos-os-bytesec,393/ 下载完成后进入配置修改网卡 教程 配置 第一步:启动靶机时按下 shift 键, 进入以下界面 第二步:选择第二个选项,然后按下 e 键,进入编辑界面 将…

python快速两两元素求相似矩阵

目录 1. 计算相似度矩阵2. 基于sklearn 1. 计算相似度矩阵 计算相似度矩阵的方法有很多种,发现了sklearn中直接有通过计算余弦相似度得到相似度矩阵的方法 1 sklearn.metrics.pairwise.cosine_similarity # 余弦相似度 2 sklearn.metrics.pairwise.pairwise_distan…

【NetCore】09-中间件

文章目录 中间件:掌控请求处理过程的关键1. 中间件1.1 中间件工作原理1.2 中间件核心对象 2.异常处理中间件:区分真异常和逻辑异常2.1 处理异常的方式2.1.1 日常错误处理--定义错误页的方法2.1.2 使用代理方法处理异常2.1.3 异常过滤器 IExceptionFilter2.1.4 特性过…

NTN(六) switchover

NTN中的switchover包括feeder link switchover和 serving link switch。所谓feeder link switchover就是将feeder link从source NTN 网关更改为特定 NTN payload的target NTN 网关的过程。 feeder link switchover是网络层过程。 而service link switch则是指serving NTN paylo…