vue3项目history路由模式部署上线405、刷新404问题(包括部分页面刷新404问题)
一、找不到js模块
解决方法:配置Nginx配置文件:
// root /your/program/path/dist
root /www/wwwroot/my_manage_backend_v1/dist;
二、刷新页面导致404问题(Not found)
经过一系列配置后发现进入页面一切正常,包括路由前进和回退,但是一刷新页面就会出现404 页面丢失问题:
解决方法:配置Nginx配置文件:
location / {try_files $uri $uri/ /index.html;...
}
三、405问题(Not allowed)
部署后发现能够进入登录页面即index.html页面,但每次点击登录就报错405问题:
要是你前端和后端确保没有配置错误,这个问题一般就是Nginx配置文件有问题,产生这种问题的前提是你采用上面两个方法解决了上面两个问题,由于一开始你的接口请求跨域配置也放在了“ location /”里面,如下:
# HTTP反向代理相关配置开始 >>>location ~ /purge(/.*) {proxy_cache_purge cache_one $host$request_uri$is_args$args;}location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;proxy_set_header X-Host $host:$server_port;proxy_set_header X-Scheme $scheme;proxy_set_header X-Forwarded-Method $request_method; # 确保请求方法被代理proxy_connect_timeout 30s;proxy_read_timeout 86400s;proxy_send_timeout 30s;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}# HTTP反向代理相关配置结束 <<<
这样就导致当你想请求动态接口js资源时,你会发现js可能会执行成功,但页面没有跳转,url地址也没变,还有的接口会报错405,这是因为上面仅仅配置了 ‘location /’,导致所有进来的http请求都去try_files了,**并没有正确的代理到后端服务,**因此出现上述问题。解决方法如下:
# 前端路由代理配置(因为采用了history路由模式)静态资源location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;}# 后端接口代理配置location /api {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /user {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /setting {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}// ...
将静态页面index.html放在“/”根目录下,如果前端发起请求时没有更准确的路径与之匹配,就采用这个文件匹配;
此外,后端接口也就是各个路由模块也需要配置对应的路径,以至于将它们代理到服务器上,进行相应,注意:每个路由模块都要挂载,一般在app.js里面,可以看看有哪些路由模块。
四、最后总结一下
上面这种配置在前端路由和后端接口前缀一致时,也会产生404问题(页面展示 not get/post),因为当你获取某个页面路由时比如/setting,由于Nginx里面配置了代理服务 location /setting, 这会代理到到接口请求,当然就不能获取页面资源了。解决这个问题的根本方法:
后端里面:每个路由模块都加一个统一的前缀,比如 ‘/api’;
前端里面:在封装axios时,里面的baseURL: `${import.meta.env.VITE_API_BASEURL}/api` ,做一个拼接就好了,这样可以不用一个个在每个接口请求的前面加 /api了(毕竟开发环境时,好多人不加api)。
Nginx配置:上面处理完之后,就等于所有后端接口都在 /api下面了,前端直接 / 这个路径获取,后端只需要一个代理 location /api 就好了,如下配置:
# 前端路由代理配置(因为采用了history路由模式)静态资源location / {root /www/wwwroot/my_manage_backend_v1/dist;try_files $uri $uri/ /index.html;}# 后端接口代理配置location /api {proxy_pass http://127.0.0.1:3007;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
至此,完全解决~
相关文章:

vue3项目history路由模式部署上线405、刷新404问题(包括部分页面刷新404问题)
一、找不到js模块 解决方法:配置Nginx配置文件: // root /your/program/path/dist root /www/wwwroot/my_manage_backend_v1/dist;二、刷新页面导致404问题(Not found) 经过一系列配置后发现进入页面一切正常,包括路由前进和回退࿰…...

电阻容差是啥意思
定义 电阻器在生产过程中,由于工艺等因素的限制,其实际阻值不可能与标称阻值完全一致,总会存在一定的误差。例如,一个标称阻值为100Ω、容差为5%的电阻,其实际阻值可能在95Ω至105Ω之间。 产生原因 材料特性差异&a…...

Rust: offset祼指针操作
offset是偏移元素个数,不是字节数! fn main(){let student_a Student{id:20240001,name:"张三娃".into(),class_id:3,age:14,grade:1};let student_b Student{id:20240002,name:"李四牛".into(),class_id:3,age:15,grade:1};let …...

SD本地部署和云端部署的区别以及优劣
相信有相当多多小伙伴应该是看了一些技术或者设计的博主的教程后开始尝试使用SD的,在大多数的SD教程中,绝大多数都是推荐本地化的部署流程,毕竟本地部署后的SD自由度会显得高一些,大部分的操作也都完全可以实现,只不过…...

4、数据结构与算法解析(C语言版)--栈
栈的数据存储遵循“后进先出的规则”,这在计算机里面是非常有用的,比如word等编辑软件的"撤销"功能,就是使用栈进行实现的。 1、创建项目 main.h #ifndef _MAIN_H #define _MAIN_H#include <stdio.h> #include <stdlib.…...

c# 后台任务自动执行
如果有些任务需要在后台自动执行,且时不时需要添加一个任务,且按照优先级顺序执行,那么可以参考本文的方法。 后台任务类 定义一个后台任务类BackgroundTaskThread,其中Start方法是用来启动任务的,循环查询是否有添加…...

被裁20240927 --- 嵌入式硬件开发 前篇
前篇主要介绍一些相关的概念,用于常识扫盲,后篇开始上干货! 他捧着一只碗吃过百家的饭 1. 处理器芯片1.1 处理器芯片制造商一、 英特尔(Intel)二、 三星(SAMSUNG)三、 高通(Qualcomm…...

重温设计模式--观察者模式
文章目录 观察者模式(Observer Pattern)概述观察者模式UML图作用:实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题(Subject):具体主题(Concrete Subject…...

vulnhub靶场——Log4j2
第一步:搭建靶场环境 #开启环境 cd vulhub/log4j/CVE-2021-44228 docker-compose up -d 来到网站首页 第二步:搭建一个dnslog平台上获取我们注入的效果 第三步:发现 /solr/admin/cores?action 这里有个参数可以传 我们可以看到留下了访问记录并且前面的参数被执行后给我们回…...

Vue3中使用resolve进行路径别名设置
Vue3中使用resolve进行路径别名设置 使用Vite初始化Vue3项目工程请参考文章:Vite创建Vue3工程并引入ElementPlus(图文详细) 1.使用~路径别名替换根目录,使用路径别名替换src目录 在vite.config.js配置文件下添加如下配置 impo…...

Linux 添加磁盘
1、编辑虚拟机添加磁盘 然后开启虚拟机 选项如下: DOS (MBR) a 切换可引导标志 b 编辑嵌套的 BSD 磁盘标签 c 切换 DOS 兼容标志 通用 d 删除一个分区 F 列出未分配的空闲空间 l 列出已知的分区类型 n 添加一个新分区 p 打印分区表 t 更改分区类…...

集成 jacoco 插件,查看单元测试覆盖率
文章目录 前言集成 jacoco 插件,查看单元测试覆盖率1. 添加pom2. 配置完成、执行扫描3. 执行结果4. 单元测试报告 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞…...

MySQL purged gtid是如何生成和维护的
目录 1. GTID的基本概念2. GTID的生成3. GTID的清除3.1 手动清除二进制日志3.2 自动清除二进制日志3.3 重置主库 在MySQL中,gtid_purged表示已清除的GTID集合。 gtid_purged的生成和维护过程如下: 1. GTID的基本概念 GTID(Global Transact…...

[创业之路-206]:《华为战略管理法-DSTE实战体系》- 6-关键成功因素法CSF
目录 一、概述 1、定义与起源 2、关键成功因素的定义 3、关键成功因素的来源 4、关键成功因素的确认方法 5、关键成功因素法的步骤 6、关键成功因素法的应用 7、关键成功因素法的优势与局限性 二、 关键成功因素法CSF的应用 1、企业战略管理 2、项目管理 3、绩效管…...
[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算
在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…...

目标检测——基于yolov8和pyqt的螺栓松动检测系统
目录 1.项目克隆和环境配置1.1 我这里使用的是v8.0.6版本1.2 项目代码结构介绍 2.数据集介绍2.1 数据集采集2.2采集结果介绍 3.模型训练4.pyqt界面设计4.1 界面内容介绍4.2 界面实现 5.操作中的逻辑实现5.1 图片检测5.2 文件夹检测5.3 视频检测和摄像头检测 6. 效果展示 1.项目…...

【Java数据结构】LinkedList
认识LinkedList LinkedList就是一个链表,它也是实现List接口的一个类。LinkedList就是通过next引用将所有的结点链接起来,所以不需要数组。LinkedList也是以泛型的方法实现的,所以使用这个类都需要实例化对象。 链表分为很多种,比…...

图像处理-Ch4-频率域处理
Ch4 频率域处理(Image Enhancement in Frequency Domain) FT :将信号表示成各种频率的正弦信号的线性组合。 频谱: ∣ F ( u , v ) ∣ [ R 2 ( u , v ) I 2 ( u , v ) ] 1 2 |F(u, v)| \left[ R^2(u, v) I^2(u, v) \right]^{\frac{1}{2}} ∣F(u,v)…...

WPS工具栏灰色怎么办
WPS离线不登录,开启工具栏等相关功能 当你在使用WPS的过程中,若因网络问题或其他特殊原因,导致无法登录使用WPS时,可根据以下步骤开启离线兼容模式,开启此模式后,可在未登录的状态下,激活并使用…...

渐开线齿轮和摆线齿轮有什么区别?
摆线齿形与渐开线齿形的区别 虽然在比对这两种齿形,但有一个事情希望大家注意:渐开线齿轮只是摆线齿轮的一个特例。 (1)摆线齿形的压力角在啮合开始时最大,在齿节点减小到零,在啮合结束时再次增大到最大…...

vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)
扫描出ip为192.168.121.161 访问该ip,发现只是一个静态页面什么也没有 使用dir dirsearch 御剑都只能扫描到/robots.txt /server-status 两个页面,前者提示我们什么也没有,后面两个没有权限访问 扫描端口,存在81端口 访问&#x…...

应用高次、有理代数式为AI生成亚对称图像
原创:daode1212(daode3056) 本文定义不完全对称的图像叫亚对称图像,因为全对称的太过机械,不符合人工的特点,本人基于二元高次的有理式,生成时引入N个随机数分A,B两个组,再通过指针对画布所有像素高速扫描生…...

潜在狄利克雷分配LDA 算法深度解析
引言 潜在狄利克雷分配(Latent Dirichlet Allocation, LDA)是一种广泛应用于文本挖掘和信息检索领域的主题模型。它能够从文档集合中自动发现隐藏的主题结构,为理解大规模文本数据提供了强有力的工具。本文将着重讲解 LDA 的核心理论&#x…...

[x86 ubuntu22.04]双触摸屏的触摸事件都响应在同一个触摸屏上
1 问题描述 CPU:G6900E OS:ubuntu22.04 Kernel:6.8.0-49-generic 系统下有两个一样的 edp 触摸屏,两个触摸屏的触摸事件都响应在同一个 edp 屏幕上。 2 解决过程 使用“xinput”命令查看输入设备,可以看到只有一个 to…...

重温设计模式--代理模式
文章目录 定义UML图代理模式主要有以下几种常见类型:代理模式涉及的主要角色有:C 代码示例 定义 代理模式(Proxy Pattern)属于结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。 通过引入代理对象&am…...

一些elasticsearch重要概念与配置参数
ES 是在 lucene 的基础上进行研发的,隐藏了 lucene 的复杂性,提供简单易用的 RESTful Api接口。ES 的分片相当于 lucene 的索引。 Node 节点的几种部署实例 实例一: 只用于数据存储和数据查询,降低其资源消耗率 node.master: false node.da…...

leetcode 面试经典 150 题:螺旋矩阵
链接螺旋矩阵题序号54题型二维数组(矩阵)解题方法模拟路径法难度中等熟练度✅✅✅ 题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3…...

JAVA AOP简单实践(基于SpringBoot)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

java agent的使用【通俗易懂版】
一、静态代理Agent 1.生成Agent的jar包 (1)创建Agent项目,引入javassist.jar包 (2)编写premain方法 import java.lang.instrument.Instrumentation;public class Agent1 {public static void premain(Stri…...

大模型学习指南
随着人工智能的迅猛发展,大模型成为了技术前沿的璀璨明星。踏入大模型学习领域,需要在多个关键方面下功夫。 扎实的数学功底是基石。线性代数为理解多维数据、矩阵运算提供支撑,像大模型中权重矩阵的处理就离不开它;概率论与数理…...