前端打包配置+nginx配置实现部署及部署地址带特定前缀的几种方式

前端打包后要部署到服务器,在浏览器中可以通过url访问到我们开发的系统,通过nginx代理在工作中是一种很常用的方式。

这里以本地为例,把本地电脑当作一个服务器,实现普通部署、带特定前缀等
前端使用vue-cli+vue作为例子
以下内容都只解决在不同情况下请求前端打包文件404问题,如果在index.html中有引入public下的静态资源,可以使用**<%= BASE_URL %>**来代替相对路径或绝对路径,<%= BASE_URL %>对应的就是vue.config.js中publicPath
在这里插入图片描述

1.hash路由+不带前缀的普通部署

效果如下:地址为ip:port/#/hashPath形式(因为用的是默认的端口80所以可以不写端口号)
在这里插入图片描述
这种是最简单的部署方式。部署时不使用任何前缀,且前端使用的hash路由模式,不用担心后面访问资源404问题。
配置:

  1. 前端vue.config.js配置中不配置publicPath或者设置publicPath:'/'。对应的如果使用webpack.config.js,不设置output.publicPath或者设置为’/'。
  2. 打包生成dist文件,放到任意自己期望的目录下面
  3. 配置nginx
    示例:
    在这里插入图片描述
    其中:
    location:nginx的块级指令,用来匹配url请求。这里我们打算把前端部署在不带前缀的地址上,故直接使用 / 。关于location更多的配置可以参考https://zhuanlan.zhihu.com/p/137042956?utm_id=0
    root:用于指定文件系统中某个目录作为请求的根目录(还有一个alias与其类似,后面解释)
    index: 用于指定网站初始页 默认值为index index.html后面可以跟多个值用 空格 隔开,更多配置和解释可以参考官网/其他

2. hash路由+特定前缀

效果如下:地址为ip:port/prefixPath/#/hashPath形式
在这里插入图片描述

配置方式1:

  1. 前端打包配置publicPath设置为 ./
    ./代表当前目录下,这样设置可以适配在不同环境下想要为系统设置不同前缀的问题,不论设置什么前缀都能正确匹配
    在这里插入图片描述

  2. 打包生成dist文件,放到任意自己期望的目录下面

  3. 配置nginx:示例:
    在这里插入图片描述
    alias:用于将请求映射到另一个目录或文件上(用于将请求的URL路径与文件系统路径进行映射)

alias和root的区别:

如果上面仍然使用root访问url时得到的结果将是404 Not Found
在这里插入图片描述
root: 指定文件系统中某个目录作为请求的根目录,Nginx会在该目录下寻找请求的文件,最后请求的路径为root指定的URL + location上的URL
alias:将请求映射到另一个目录或文件上,最后请求的路径为alias指定的URL,即loaction后面的路径将被忽略。

配置方式2:

如果部署的前缀固定,可以设置publicPath为固定路径

  1. 配置publicPath为固定地址(这个地址必须和nginx配置的location 后面的url路径保持一致
    在这里插入图片描述

  2. 同配置方式1

  3. 同配置方式1

3.history模式

history模式相对hash模式配置要更加复杂,稍微不注意可能就会出现404
publicPath的几种配置

1. ‘./’ 表示 与当前路径处于同一级

1.1 浏览器地址为localhost/tenant-mgt/ (注意是以/结尾的) 则跟tenant-mgt/同级,相当于是tenant-mat的下一级,因为tenant-mgt后面有一个/
在这里插入图片描述
这情况下请求的地址为:
在这里插入图片描述

1.1 那如果此时tenant-mgt/ 中/后面还有一个路径呢 如loacalhost/tenant-mgt/index 那么上面vue.min.js的请求地址是什么?
答案是和上面一样,即还是loacalhost/tenant-mgt/vendor/vue.min.js 因为和index同级就是相当于tenant-mgt的后面一级
1.2 那如果tenant-magt后面没有/呢,即localhost/tenant-mgt。这个时候./和/tenant-mgt同级即loaclhost/这一级
则请求的地址就变成了loacalhost/vendor/vue.min.js
所以最后是不是以 / 结尾很重要

  1. ‘/’表示绝对地址,无论部署的地址和浏览器中显示的地址是什么,请求静态文件的地址都是根路径

3.1history模式+不带固定前缀

1.前端打包配置publicPath为 ‘/’(重要,这里不能设置为相对地址,否则js等文件请求将会带上浏览器url上面的地址,导致请求404)
在这里插入图片描述

2.nginx配置为
在这里插入图片描述

location / {root   D:\frontend\console\dist(前端打包路径);index  index.html index.htm;try_files $uri $uri/ /index.html(必须,否则刷新时会404;
}

例:下图中/login是访问系统后跳转到的路由路径
在这里插入图片描述

3.1history模式+固定前缀

假设我们需要部署的地址的前缀是/test
1.设置路由的base值为/test
在这里插入图片描述

2.设置publicPath为 /
在这里插入图片描述

3.nginx配置

location / {root   D:\frontend\console\dist(前端打包路径);index  index.html index.htm;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle中常用内置函数

一、字符串函数 CONCAT(s1, s2)&#xff1a;连接两个字符串s1和s2。 SELECT CONCAT(Hello, World) FROM DUAL-- 结果&#xff1a;Hello World --或者使用 || 操作符 SELECT Hello || World FROM DUAL -- 结果&#xff1a;Hello World INITCAP(s)&#xff1a;将字符串s…

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善&#xff0c;ArkUI 完善了组件通过 C API 调用的能力&#xff1b;应用框架细化了生命周期管理能力&#xff0c;完善了应用拉起、跳转的能力&#xff1b;分布式软总线连接能力…

如何找合适的C++项目给自己的简历加分?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C的工作多种多样&#x…

Str.format()方法

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 在Python2.6之后&#xff0c;提供了字符串的format()方法对字符串进行格式化操作。format()功能非常强大&#xff0c;格式也比较复杂&…

MobPush iOS端海外推送最佳实现

推送注册 在AppDelegate里进行SDK初始化&#xff08;也可以在Info.plist文件中进行AppKey&#xff0c;AppSecret的配置&#xff09;并对通知功能进行注册以及设置推送的环境和切换海外服务器等&#xff0c;参考如下步骤代码&#xff1a; <span style"background-colo…

文心一言 VS 讯飞星火 VS chatgpt (291)-- 算法导论21.3 4题

四、假设想要增加一个 PRINT-SET(x) 操作&#xff0c;它是对于给定的结点 x 打印出 x 所在集合的所有成员&#xff0c;顺序可以任意。如何对一棵不相交集合森林的每个结点仅增加一个属性&#xff0c;使得 PRINT-SET(x) 所花费的时间同 x 所在集合元素的个数呈线性关系&#xff…

C++ | Leetcode C++题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; class Solution {const int L 10;unordered_map<char, int> bin {{A, 0}, {C, 1}, {G, 2}, {T, 3}}; public:vector<string> findRepeatedDnaSequences(string s) {vector<string> ans;int n s.length();if (n < L…

内网穿透实现方案(免费版)_免费内网穿透

#巴比达内网穿透——我的网络救星# 作为一个常常在网络世界里摸索的人&#xff0c;我一直在寻找一款真正好用的内网穿透工具。相信很多朋友都和我有过一样的经历&#xff0c;为了找到合适的工具&#xff0c;试了一个又一个&#xff0c;却总是失望而归。但这次&#xff0c;我真…

2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试…

大厂程序员上班猝死成常态?

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 近日&#xff0c;连续看到大厂程序员猝死、低血糖晕倒的新闻&#xff0c;同为程序员感到很难受。互联网加班成常态这是既定事实&#xff0c;尤其在这个内卷严重、经济不景气的环境中&#xff0c;加班…

C++编程(一)C++与C语言的一些区别

文章目录 一、QtCreator基本使用&#xff08;一&#xff09;编码格式&#xff1a;&#xff08;二&#xff09;C编程1. 文件后缀2. 编译3. 头文件 二、名字空间&#xff08;一&#xff09;概念以及访问方式1. 概念2. 访问方式&#xff08;1&#xff09;通过作用域限定符进行访问…

数据挖掘常见算法(聚类)

划分方法 K-均值算法(K-means算法) 方法: 首先选择K个随机的点,称为聚类中心.对于数据集中的,每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类.计算每一个组的平均值,将改组所关联的中心点移动到平均值的位置重复2~…

波士顿大学开发通过患者的声音检测早期阿尔茨海默氏症迹象的AI系统

波士顿大学的研究人员开发了一种人工智能系统&#xff0c;能够通过患者的声音检测阿尔茨海默病的早期迹象。目前尚无治愈这种疾病的方法&#xff0c;但及早发现可以改善患者的治疗选择。研究人员结合自然语言处理和机器学习&#xff0c;开发了一种可以自动预测患者阿尔茨海默病…

RocketMq源码解析九:刷盘机制及过期文件删除

一、刷盘机制 刷盘策略在不同时间进行刷写磁盘。RocketMQ的存储是基于JDK NIO的内存映射机制(MappedByteBuffer)的,消息存储首先将消息追加到内存,再根据配置的刷写磁盘 同步刷盘表示消息追加到内存后,立即将数据刷写到文件系统中。代码的调用链如下: submi…

新手必备!短视频剪辑常用的18个技巧——剪映篇

导入素材&#xff1a;这里我们可以选择自己拍摄好的素材&#xff08;图片、视频或录制好的音频&#xff09;&#xff0c;按照顺序导入剪辑区剪辑。这一步是剪辑的基础&#xff0c;确定剪辑的大体思路与成片框架&#xff01;别忽略了&#xff0c;剪映官方素材库提供的素材&#…

【数学建模】—【Python库】—【Numpy】—【学习】

目录 ​编辑 1. NumPy安装 2. ndarray对象 1. 创建ndarray 1.从列表或元组创建&#xff1a; 2.使用内置函数创建&#xff1a; 2. ndarray属性 3. 数组运算 1. 基本运算 2. 数学函数 3.统计函数 4. 数组索引与切片 1. 一维数组索引与切片 2.多维数组索引与切片 5.…

免费直播课程!6月30日

<面向人工智能领域的开发工程师&#xff0c;特别是机器学习/深度学习方向> 在这里报名听课&#xff1a; F学社-全球FPGA技术提升平台 (zzfpga.com) TIPS&#xff1a; 报名后将在页面内弹出「腾讯会议号和会议密码」&#xff0c;注意复制保存哦~

python笔记----少儿编程课程

第1课&#xff1a; 认识新朋友-python 知识点&#xff1a; 1、在英文状态下编写Python语句。 2、内置函数print()将结果输出到标准的控制台上&#xff0c;它的基本语法格式如下&#xff1a; print("即将输出的内容") #输出的内容要用引号引起来&#xff0c;可…

Jmeter插件管理器,websocket协议,Jmeter连接数据库,测试报告的查看

目录 1、Jmeter插件管理器 1、Jmeter插件管理器用处&#xff1a;Jmeter发展并产生大量优秀的插件&#xff0c;比如取样器、性能监控的插件工具等。但要安装这些优秀的插件&#xff0c;需要先安装插件管理器。 2、插件的下载&#xff0c;从Availabale Plugins中选择&#xff…

android Studio 无线开发调试: PC机远程安卓电脑 免费

背景 公司的安卓机比较大&#xff0c;还有连接着串口设备不好挪动。 但是遇到问题调试很麻烦。想找到一套远程调试方法。 实现 要求&#xff1a; adb android Studio 2023.3.1 安卓机IP:1928.168.1.228 直接用adb远程连接&#xff1a;adb connect 1928.168.1.228 默认端口…