nginx之location的优先级和nginx的重定向
一、nginx之location的优先级和匹配方式(重点)
(一)nginx的正则表达式
| nginx的正则表达式 | |
| 符号 | 含义 |
| ^ | 字符串的起始位置(以什么开头) |
| $ | 字符串的结束位置(以什么结尾) |
| * | 匹配所有 |
| + | 匹配前面的字符最少1次 |
| ? | 匹配前面的字符0次或者1次 |
| . | 任意单个字符 |
| {n} | 连续重复出现n次 |
| {n,m} | 连续重复n-m次 |
| [c] | 匹配单个字符c |
| () | 分组 |
| | | 或 |
(二)location匹配的分类:location一旦匹配成功,不再向下继续匹配
1、精确匹配:完整路径,一个字不能少,也不能错
(1)格式:location = / {}
2、正则匹配
(1)格式:location ~ / {}
| 正则匹配符号 | 含义 |
| ^- | 前缀匹配,以什么为开头 |
| ~ | 区分大小写进行匹配 |
| ~* | 不区分大小写进行匹配 |
| !~ | 区分大小写取反匹配 |
| !~* | 不区分大小写取反匹配 |
(三)location匹配的优先级(重点)
1、精确匹配的优先级最高——正则匹配——一般匹配优先级最低
location = 完整路径 > location ^- > location~/~* > location /test > location /
2、生产中配置location的原则
(1)网站首页(一般是静态页面,匹配网站的根工作目录):一律都是精确匹配
①格式:
location = / {
}
(2)处理静态文件的请求:目录匹配和后缀匹配
①格式:
location ^~ /static {
}
location ~* \. {html|jpg|jpeg}$ {
}
(3)一般匹配:做反向代理、动态请求,把动态请求转发到后端的服务器
①格式:
location / {
proxy_pass http://tomcat server;
}




二、nginx的重定向(页面跳转)
(一)rewrite的相关概念
1、rewrite:结合nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位实现
url重写以及重定向
2、rewrite中可以添加if语句,但只有if没有else
(二)rewrite的执行顺序
1、执行server块里面的rewrite
2、执行location里面定义的rewrite
3、选定location中的rewrite
(三)rewrite的语法
格式:rewrite <regex> <replacement> [flag]
1、<regex>:正则表达式
2、<replacement>:跳转的内容或者路径
3、[flag]:标志位,标记
(1)last:继续匹配。本条规则匹配完成后,继续向下匹配新的location URI规则


internal redirection cycle while processing:
处理请求时发生了重写或者内部重定向循环,进入了无限循环,nginx内部循环最多可以执行10次,超过10次会报错500


(2)break:本条规则匹配完之后立即终止,页面内容变化,uri不变(用的较多)



(3)redirect:临时重定向(302) uri的地址会发生变


(4)permanent:永久重定向(301),uri的地址会发生变化
.* :表示匹配所有
$1 :表示捕获组,$1表示引用正则表达式的第一个捕获组
www.yyy.com/test/index.html 1.jpg
www.yyy.com/ky32/index.html 1.jpg
$1 匹配就是(.*)里的内容


(四)总结
1、表面上rewrite和location都可以跳转,但区别在于rewrite是在同一域名之内更改获取资源的路径
2、location是对路径访问控制,匹配到之后不再向下继续匹配
3、临时重定向和永久重定向(会影响搜索引擎的权重)
(1)永久重定向会加入搜索引擎的权重
(2)临时重定向不会加入搜索引擎的权重
(五)实验一:基于域名的跳转
www.yyy.com,公司业务变更,迁移到了新的域名www.benet.com代替,但是旧域名不能被废除(访问yyy可以跳转到benet,且匹配的uri不能变)



(六)实验二:基于ip地址的域名
公司业务新版本上线,用户访问网站统一显示固定的维护页面,只有公司的20.0.0.xx可以访问

![]()




相关文章:
nginx之location的优先级和nginx的重定向
一、nginx之location的优先级和匹配方式(重点) (一)nginx的正则表达式 nginx的正则表达式 符号 含义 ^ 字符串的起始位置(以什么开头) $ 字符串的结束位置(以什么结尾) * 匹…...
【计算机网络】——前言计算机网络发展的历程概述
主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法:算法专栏 C头…...
eventfd
1. #include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); //创建eventfd 参数含义: initval:创建eventfd时它所对应的64位计数器的初始值; flags:eventfd文件描述符的标志,可由三种选项组…...
BES耳机空间音频技术实现
BES耳机空间音频技术实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?加我微信hezkz17, 本群提供音频技术答疑服务 音响和耳机在空间音频技术上实现方式是不同的 虚拟现实可谓是空间音频技术最具代表性的应 用领域。虽然虚拟现实的起源可以追溯到1 9 6 8年, …...
day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)
目录 Bootstrap之Modal: 显示和隐藏方法 通过自定义属性: 使用JS来控制弹框: Bootstrap之Toast: 接口文档一些用法: 删除图书: 图片上传: 图片上传步骤: 修改头像…...
【ArcGIS Pro二次开发】(70):杂七杂八的记录
本文用于记录一些使用频率较高但归类繁杂,非系统性的一些代码。 主要方便自己使用和查阅,随时更新。 1、从GDB数据库中打开【FeatureDataset\FeatureClass\Table】 using Geodatabase gdb new Geodatabase(new FileGeodatabaseConnectionPath(new Uri…...
竞赛选题 深度学习 机器视觉 人脸识别系统 - opencv python
文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 人脸识别系统 该项目…...
【工具】SSH端口转发管理器,专门管理SSH Port Forwarding
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 开源代码看这里:http://xfxuezhang.cn/index.php/archives/1151/ 背景介绍 有时候需要用到ssh的端口转发功能。目前来说,要么是cmd里手敲指令,但每次敲也太麻烦了;或…...
opencv-phase 函数
计算梯度强度和方向 梯度的方向与边缘的方向总是垂直的。图像中的边缘可以指向各个方向,通常会取水平(左、右)、垂直(上、下)、对角线(左上、右上、左下、右下)等八个不同的方向计算梯度。 角度…...
44.ES
一、ES。 (1)es概念。 (1.1)什么是es。 (1.2)es的发展。 es是基于lucene写的。 (1.3)总结。 es是基于lucene写的。 (2)倒排索引。 (3…...
分权分域有啥内容?
目前的系统有什么问题? 现在我们的系统越来越庞大,可是每一个人进来的查看到的内容完全一样,没有办法灵活的根据不同用户展示不同的数据 例如我们有一个系统,期望不同权限的用户可以看到不同类型的页面,同一个页面不…...
6.Docker搭建RabbitMQ
1、端口开放 如果在云服务上部署需在安全组开通一下端口:15672、5672、25672、61613、1883。 15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列遥测传输)。 2、安装镜像 docker pull rabbitmq 3、…...
用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?
用 docker 创建 jmeter 容器, 实现性能测试 我们都知道,jmeter可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用jmeter。docker是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到…...
4年软件测试,突破不了20K,太卷了。。。
先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。 现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试&am…...
机器人控制算法——两轮差速驱动运动模型
1.Introduction 本文主要介绍针对于两轮差速模型的逆运动学数学推导。因为在机器人控制领域,决策规划控制层给执行器输出的控制指令v(车辆前进速度)和w(角速度),因此,我们比较关心,当底层两个驱动电机接收到此信息,如何…...
Queue简介
概念: 队列(Queue)是一种常见的线性数据结构,在Java中用于存储和操作元素序列。它基于先进先出(First-In-First-Out, FIFO)原则,即最早入队的元素首先出队。只能在队尾添加元素,在队…...
被面试官问到分布式ID,别再傻乎乎只会答雪花算法了...
文章目录 1. 分布式ID2. 数据库主键自增3. 数据库号段模式4. Redis自增5. UUID6. Snowflake (雪花算法)7. Leaf (美团分布式ID生成系统)7.1 Leaf-segment 号段方案7.1.2 双buffer优化 7.2 Leaf-snowflake方案7.3 Leaf-snowflake Demo 1. 分布式ID 在分布式系统中,通…...
使用Boto3访问AWS S3服务
安装Boto3,执行如下命令: python -m venv .venv . .venv/bin/activate python -m pip install boto3创建配置文件,执行如下命令: mkdir -p ~/.aws touch ~/.aws/credentials touch ~/.aws/config编辑 ~/.aws/credentials&#x…...
ODrive移植keil(五)—— 开环控制和电流变换
目录 一、开环控制1.1、控制原理1.2、硬件接线1.3、代码说明1.4、程序演示1.5、程序架构的体现 二、电流变换2.1、理论说明2.2、代码说明 ODrive、VESC和SimpleFOC 教程链接汇总:请点击 一、开环控制 在SimpleFOC系列中有开环控制的教程,SimpleFOC移植S…...
【Java学习之道】日期与时间处理类
引言 在前面的章节中,我们介绍了Java语言的基础知识和核心技能,现在我们将进一步探讨Java中的常用类库和工具。这些工具和类库将帮助我们更高效地进行Java程序开发。在本节中,我们将一起学习日期与时间处理类的使用。 一、为什么需要日期和…...
你的嵌入式数据记录仪方案:基于STM32CubeMX+FATFS+SD卡存储传感器数据(CSV格式实战)
嵌入式数据记录仪实战:STM32CubeMXFATFSSD卡构建工业级CSV存储方案 在工业物联网和智能硬件开发中,可靠的数据记录功能往往是产品核心价值所在。想象一下温室大棚的环境监控系统需要连续记录温湿度数据三个月,或者电力设备振动监测装置要在无…...
用Python手把手复现灰狼算法GWO:从狩猎行为到代码实现(附完整源码)
用Python手把手复现灰狼算法GWO:从狩猎行为到代码实现(附完整源码) 灰狼优化算法(Grey Wolf Optimizer, GWO)作为一种新兴的群体智能算法,正逐渐在工程优化、机器学习参数调优等领域崭露头角。与传统的遗传…...
【免费下载】 MATLAB从入门到精通教程 - PDF文档下载指南【matlab下载】
MATLAB从入门到精通教程 - PDF文档下载指南 欢迎来到《MATLAB从入门到精通教程》的资源页面!本资源旨在为所有想要深入学习MATLAB编程语言的学者和工程师提供一份详尽、全面的学习资料。这份权威的PDF文档是英文版,非常适合希望掌握MATLAB核心功能及高级…...
Altium Designer 22 导出嘉立创SMT文件保姆级教程(附BOM/坐标文件避坑指南)
Altium Designer 22 导出嘉立创SMT文件全流程解析与实战技巧 在电子设计领域,从手工焊接转向SMT贴片生产是一个关键的进阶步骤。对于使用Altium Designer(简称AD)的设计师来说,掌握正确的文件导出方法不仅能节省大量时间ÿ…...
ComfyUI-VideoHelperSuite:AI视频工作流的专业解决方案
ComfyUI-VideoHelperSuite:AI视频工作流的专业解决方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 你是否在ComfyUI中处理视频时感到困扰…...
别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了
太阳能充电电路实战:CN3791芯片调试避坑指南 当阳光洒在太阳能板上,理论上我们应该获得源源不断的清洁能源。但现实往往比理想骨感得多——尤其当你发现精心设计的CN3791充电电路始终无法将锂电池充满时。这不是芯片的错,而是我们在参数设置和…...
Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案
Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能强大的浏览器扩展…...
Go语言命令行交互库promptui实战:打造专业CLI工具
1. 项目概述:一个让命令行交互“活”起来的工具如果你经常和命令行打交道,无论是管理服务器、运行自动化脚本,还是开发调试,肯定遇到过需要用户输入参数的情况。传统的做法是使用read命令,或者在脚本里写死参数&#x…...
从 API 密钥管理角度看 Taotoken 控制台提供的安全与便捷性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从 API 密钥管理角度看 Taotoken 控制台提供的安全与便捷性 1. 引言:集中管理的起点 在开发涉及大模型的应用时&#…...
Ubuntu系统部署Cursor AI编辑器:从安装配置到实战优化全指南
1. 项目概述:在Ubuntu上快速部署Cursor AI编辑器最近在开发者圈子里,Cursor这款AI驱动的代码编辑器热度持续攀升。作为一个深度依赖Ubuntu进行日常开发的程序员,我自然也第一时间尝试了在Ubuntu 22.04 LTS上安装和配置Cursor。整个过程比预想…...
