从0-1超详细教你使用nginx打包部署静态资源,以及hash和history配置汇总

news2024/11/26 21:20:17

首先呢,我们要有以下几个方面的知识和操作,来实现项目部署

第一:我们要搭建nginx部署基础环境

具体流程可参考这个链接从0-1超详细教你实现前端代码nginx部署全流程

第二:我们要知道前端路由hash和history实现以及区别

路由功能:

  • 1、记录当前页面的状态(保存或分享当前页的url,再次打开该url时,网页还是保存的(分享)时的状态);
  • 2、可是使用浏览器的前进后退功能(如点击后退按钮,可以使页面回到ajax更新页面之前的状态,url也回到之前的状态)

hash模式和history模式实现功能:

  • 1、改变url且不让浏览器向服务器发出请求;
  • 2、监测url的变化;
  • 3、截获url地址,并解析出需要的信息来匹配路由规则。

hash模式-url后带#

特点:

  • hash值变化不会导致浏览器向服务器发出请求,改变hash不会重新加载页面
  • hash改变会触发hashchange事件,浏览器的进后退也能对其进行控制
  • hash 本来是拿来做页面定位的,如果拿来做路由的话,原来的锚点功能就不能用了
  • hash的而传参是基于url的,如果要传递复杂的数据,会有体积的限制

history模式-url后不带#

特点:

  • history模式不仅可以在url里放参数,还可以将数据存放在一个特定的对象中。
  • history———利用了HTML5 History Interface 中新增的pushState()和replaceState()方法
  • history不支持IE8以下版本

第三:我们要知道部署需求

    1. 一个nginx部署一个静态资源,还是部署多个静态资源?
    1. 我们打包后路由是要使用hash模式,还是history模式?

根据不同需求进行不同打包配置以及部署,这里我以/usr/local/nginx/html这个部署路径为例:

采用hash方式打包后,部署在nginx上

  • 部署单项目,无需添加过多配置,直接把静态资源放在这里,我们就可以使用ip+端口号访问
  • 部署多个项目在一个nginx,通过ip+端口号+文件夹名访问

采用history方式打包(通俗来说就是你的网址后面不带#)

这里需要进行nginx的配置

location / {
    try_files $uri $uri/ /index.html;
}
  • try_files 试着去访问一下当前浏览所请求的页面
  • $uri 当前请求的路径 如果找到就返回
  • $uri/ 去找当前请求的路径,去找下面的文件,如果找到了就返回
  • /index.html 保底方案:如果上面两个都没有找到就直接返回 index.html
  • root 指定了 / 对应的单页静态资源目录

下面是我经常使用的nginx配置文件,送给大家作参考啦

server {

  listen 80;

  gzip on;
  gzip_min_length 1k;
  gzip_comp_level 8;
  gzip_buffers 32 4k;
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
  gzip_vary on;

  etag off;

  location ^~ /github/ {
      proxy_set_header Host abd.xiaojin.com;
      proxy_pass https://xiaojin.com/;
  }

  # location ^~ /api/ {
  #     proxy_pass https://xiaojinaaa.com/aaa/api/;
  # }

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

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

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

相关文章

Reactor响应式流的核心机制——背压机制

响应式流是什么? 响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者,而不需要发布者阻塞,或订阅者有无限制的缓冲区或丢弃。 响应式流模型存在两种基本的实现机制。一种就是传统…

【OpenAI 多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布

【多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布 先让我猜个名字,VideoGPT? 太绝了!看完ChatGPT之后就感觉OpenAI正在做多模态的预训练语言模型。万万没想到来的这么快。据介绍,GPT-4或将为多模态大模型&#…

redis经典五种数据类型及底层实现

目录一、Redis源代码的核心部分1.redis源码在哪里2.src源码包下面该如何看?二、我们平时说redis是字典数据库KV键值对到底是什么1.6大类型说明(粗分)2.6大类型说明3.上帝视角4.Redis定义了redisObject结构体4.1 C语言struct结构体语法简介4.2 字典、KV是什么4.3 red…

jsp毕业答辩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 毕业答辩管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

Spring Security基础入门

基础概念 什么是认证 认证:用户认证就是判断一个用户的身份身份合法的过程,用户去访问系统资源的时候系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户密码登录&am…

基于java的网络选课商城项目部署

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

SAP 生产订单收货入库Goods Receipt

Goods Receipt: 收货这块比较简单,当我们做完报工之后,成品就可以入库了。 那么收货完了,到底会有什么样的影响呢? 会产生物料凭证以及会计凭证,但是若订单中勾选”GR非股价的“,则不会有价值。 这里我们需…

E1. Unforgivable Curse (easy version) #855 div3

ps:很久没有更新啦,之前一直在复习准备期末考试,也没怎么写题。现在考完要恢复训练啦 Problem - E1 - Codeforces 题意: 两个字符串s和t,在s中任意两个间隔为k或者k1的字母可以进行任意次的交换,问你可不…

STL源码剖析(1) - 空间配置器与内存操作详解

文章首发于&#xff1a;My Blog 欢迎大佬们前来逛逛1. SGI空间配置器SGI STL的空间配置器是 alloc而非allocator&#xff0c;并且不接受任何参数&#xff1a;vector<int,std::alloc> vec我们通常使用缺省的空间配置器&#xff1a;template <typename T,typename Alloc…

mac 安装python、pip、weditor

问题现象&#xff1a;执行 python3 -m weditor 报错 ➜ ~ python3 -m weditor dyld[42143]: dyld cache (null) not loaded: syscall to map cache into shared region failed dyld[42143]: Library not loaded: /System/Library/Frameworks/CoreFoundation.framework/Versio…

【前端vue2面试题】2023前端最新版vue2模块,高频24问

​ &#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;博主收集的关于vue2面试题 目录 vue2面试题 1、$route 和 $router的区别 2、一个.v…

Redis高频面试题汇总(上)

目录 1.什么是Redis? 2.为什么Redis这么快 3.分布式缓存常见的技术选型方案有哪些&#xff1f; 4.你知道 Redis 和 Memcached 的区别吗&#xff1f; 5.Redis使用场景有哪些 6.Redis 常用的数据结构有哪些&#xff1f; 7.Redis 数据类型有哪些底层数据结构&#xff1f; …

sonarqube指标详解

最近公司引入了sonar&#xff0c;作为代码质量检测工具&#xff0c;以期提高研发同学的代码质量&#xff0c;但是结果出来后&#xff0c;有些同学不清楚相应的指标内容&#xff0c;不知道应该重点关注哪些指标&#xff0c;于是查询了一下相关的资料&#xff0c;加以总结同时也分…

【数据结构】堆排序

堆是一种叫做完全二叉树的数据结构&#xff0c;可以分为大根堆&#xff0c;小根堆&#xff0c;而堆排序就是基于这种结构而产生的一种程序算法。大堆&#xff1a;每个节点的值都大于或者等于他的左右孩子节点的值小堆&#xff1a;每个结点的值都小于或等于其左孩子和右孩子结点…

扬帆优配|业务量大突破,这个行业发展明显向好

近期上市的新股&#xff0c;大都在招股阐明书里公布了本年第一季度成绩预告。 我国快递事务量本年已达200亿件 国家邮政局监测数据显现&#xff0c;到3月8日&#xff0c;本年我国快递事务量已到达200.9亿件&#xff0c;比2019年到达200亿件提前了72天&#xff0c;比2022年提前…

goland开发环境搭建及运行第一个go程序HelloWorld

1、下载和安装golang 点击进入下载页面 下载好安装包&#xff0c;点击安装。 我之前安装过低版本的安装包&#xff0c;所以这里提示要先卸载已经安装过的低版本的。 同意协议&#xff0c;继续安装。 默认安装的文件夹为C盘&#xff0c;建议更改&#xff0c;我这里更改为D盘…

YOLOv5训练大规模的遥感实例分割数据集 iSAID从切图到数据集制作及训练

最近想训练遥感实例分割&#xff0c;纵观博客发现较少相关 iSAID数据集的切分及数据集转换内容&#xff0c;思来想去应该在繁忙之中抽出时间写个详细的教程。 iSAID数据集下载 iSAID数据集链接 下载上述数据集。 百度网盘中的train和val中包含了实例和语义分割标签。 上述…

哪些职业适合创业?学习哪些技能可以自己创业?

创意行业&#xff1a;创意行业包括广告、设计、影视等领域&#xff0c;需要创新思维和创意能力&#xff0c;适合创业。学习创意思维、平面设计、影视制作等技能可以自己创业。 科技行业&#xff1a;科技行业包括互联网、人工智能、物联网等领域&#xff0c;需要技术能力和创新思…

基于JavaEE开发博客系统项目开发与设计(附源码)

文章目录1.项目介绍2.项目模块3.项目效果1.项目介绍 这是一个基于JavaEE开发的一个博客系统。实现了博客的基本功能&#xff0c;前台页面可以进行文章浏览&#xff0c;关键词搜索&#xff0c;登录注册&#xff1b;登陆后支持对文章进行感谢、评论&#xff1b;然后还可以对评论…

[网络工程师]-网络规划与设计-逻辑网络设计(二)

3、广域网技术选择 3.1广域网互连技术 3.1.1 数字数据网络 数字数据网络(Digital Data Network,DDN)是一种利用数字信道提供数据信号传输的数据传输网,是一个半永久性连接电路的公共数字数据传输网络,为用户提供了一个高质量、高带宽的数字传输通道。 利用DDN网络实现局…