Nginx的Rewrite(地址重定向)

news2024/11/18 22:33:09

目录

前言 

一、Rewrite 跳转场景 

二、Rewrite 跳转实现

三、Rewrite实际场景

3.1Nginx跳转需求的实现方式

 3.2rewrite放在 server{},if{},location{}段中

3.3对域名或参数字符串

四、Rewrite正则表达式

五、Rewrite语法格式

5.1rewrite语法格式

 5.2flag标记说明

5.3last和break比较 

六、location分类

61.分类

6.2正则匹配的常用表达式

七、location优先级

八、rewrite与location做比较

8.1相同点

8.2不同点

8.3rewrite会写在location里,执行顺序

总结


前言 

访问重写 rewrite 是 Nginx HTTP 请求处理过程中的一个重要功能,它是以模块的形式存在于代码中的,其功能是对用户请求的 URI 进行 PCRE 正则重写,然后返回 30× 重定向跳转或按条件执行相关配置。 rewrite 模块内置了类似脚本语言的 set、if、break、return 配置指令,通过这些指令,用户可以在 HTTP 请求处理过程中对 URI 进行更灵活的操作控制。

一、Rewrite 跳转场景 

URL看起来更规范、合理

企业会将动态URL地址伪装成静态地址提供服务

网址换新域名后,让旧的访问跳转到新的域名上

服务端某些业务调整

二、Rewrite 跳转实现

 

三、Rewrite实际场景

3.1Nginx跳转需求的实现方式

使用rewrite进行匹配跳转

使用if匹配全局变量后跳转

使用location匹配再跳转

 3.2rewrite放在 server{},if{},location{}段中

location只对域名后边的除去传递参数外的字符串起作用

3.3对域名或参数字符串

使用if全局变量匹配
使用proxy_pass反向代理

四、Rewrite正则表达式

字符说明
^起始位置
$结束位置
*匹配前面的字符0次或多次
+匹配1次或多次
0次或一次
.匹配除“\n”之外的任何单个字符
\转义字符
\d匹配纯数字
{n}重复n次
{n,}重复n次,或更多次
{n,m}至少重复n次,最大重复m次
{,m}最多重复m次
[c]匹配单个字符c
[a-z]匹配a-z小写字母的任意一个
[a-zA-Z0-9]匹配a-z的大小写或0-9中的任意字符
()表达式的开始和结束位置
|或运算符

五、Rewrite语法格式

5.1rewrite语法格式

#命令语法

rewrite  <regex>  <replacement>  [flag] ;
 #<regex>  正则
 #<replacement>  跳转后的内容
 #[flag]    rewrite支持的flag标记

 5.2flag标记说明

名称说明
last相当于Apache的[L]标记,表示完成rewrite。
break本条规则匹配完成及终止,不在匹配后面的任何规则。
redirect返回302,临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL。
permanent返回301,永久重定向,该标记和redirect类似,但是是永久定向。
set标记表示当前规则匹配成功设置一个变量,并把变量传入下一条规则。

5.3last和break比较 

lastbreak
使用场景一般写在server和if中一般使用在location中
URL不终止重新后的URL匹配终止重写后的URL匹配

六、location分类

61.分类

location = patt{} [精准匹配]
location patt {} [一般匹配]
location ~ patt {} [正则匹配]

6.2正则匹配的常用表达式

标记说明
~执行一个正则匹配,区分大小写
~*执行一个正则匹配,不区分大小写
!~执行一个正则匹配,区分大小写不匹配
!~*执行一个正则匹配,不区分大小写不匹配
^~普通字符匹配,使用前缀匹配,如果匹配成功,则不再匹配其他location
=普通字符精确匹配,也就是完全匹配
@定义一个命名的location,使用再内部定向时

七、location优先级

location优先级

1、精准匹配    =

2、前缀匹配   ^~

3、按文件中顺序的正则匹配  ~或~*

4、匹配不带任何修饰的前缀匹配

5、通用匹配(/),如果没有其他匹配,任何请求都会匹配到

 优先级相同:

  • 正则看上下顺序,上面的优先;
  • 一般匹配看长度,最长的优先;
  • 精准,前缀、正则、一般都没有匹配到,最后再看通用匹配,一般匹配。

八、rewrite与location做比较

8.1相同点

都能实现跳转。

8.2不同点

rewritelocation
在同一域名内更改获取资源的路径对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器

8.3rewrite会写在location里,执行顺序

  • 执行server块里面的rewrite指令
  • 执行location匹配
  • 执行选定的location中的rewrite指令

总结

  1. 重定向功能:使用rewrite指令可以实现各种类型的重定向,如将HTTP请求重定向到HTTPS、非www重定向到www或反之等。通过设置返回状态码为301或302,可以实现永久或临时性重定向。

  2. URL重写功能:rewrite指令还可以在服务器配置块或location块中使用,用于修改URL的路径、查询参数等内容。你可以使用正则表达式来匹配和替换URL的特定部分。

  3. 正则表达式支持:Nginx的rewrite功能支持正则表达式,这使得对URL进行复杂匹配和替换变得更加灵活。你可以使用正则表达式进行精确的URL匹配,并根据需要进行重写或跳转。

  4. 强大的条件语句:除了基本的rewrite指令外,Nginx还提供了if指令,可以在rewrite配置中使用条件语句。这允许你根据特定的条件来执行不同的重写或跳转操作,从而进一步增强了rewrite的灵活性。

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

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

相关文章

互联网常见架构接口压测性能分析及调优手段建议

目录 互联网常见架构接口压测性能分析及调优手段建议 1 接口名称: 获取列表 1.1 压测现象:单台tps700多&#xff0c;应用cpu高负载 1.1.1 问题分析: 1.1.2 改进措施: 1.1.3 改进效果: 1.2 压测现象&#xff1a;数据库资源利用率高 1.2.1 问题分析: 1.2.2 改进措施: 1.2.3 改…

SciencePub学术 | 计算机科学类重点SCIEEI征稿中

SciencePub学术 刊源推荐:计算机科学类重点SCIE&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机科学类重点SCIE&EI 【期刊简介】IF&#xff1a;3.0-3.5&#xff0c;JCR 2区&#xff0c;中科院4区&#xff1b; 【检…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好&#xff0c;我是带我去滑雪&#xff01; 一幅精美的科研绘图会有诸多益处&#xff0c;精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像&#xff0c;可以更好地向读者展示研究的发现&#xff0c;有助于读者理解和解释数据。还…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景&#xff1a; 最近在发布一个web项目&#xff0c;在测试环境都是可以的&#xff0c;发布到生产环境通过IP访问也是可以的&#xff0c;但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通&#xff0c;域名却不行&…

如何在矩池云上运行 AI 图像编辑工具 DragGAN

5 月&#xff0c;DragGAN 横空出世&#xff0c;在开源代码尚未公布前&#xff0c;就在Github上斩获近 20000 Star&#xff0c;彼时&#xff0c;页面上只有效果图和一句“Code will be released in June”&#xff0c;然而这也足够带给人们无限期待。 在6月末&#xff0c;在若干…

SpringBoot最多可以处理多少个请求?

SpringBoot最多可以处理多少个请求&#xff1f; SpringBoot夺命连环14问&#xff0c;1天刷完别人半个月的springboot面试内容&#xff0c;比啃书效果好多了&#xff01;_哔哩哔哩_bilibili 最小线程数&#xff1a;最少的厨师的量&#xff0c;饭店人不多的时候的量。 最大线程数…

微信可以自动跟圈的软件有吗?

对于许多人而言&#xff0c;每日发朋友圈已成为必要的任务之一&#xff0c;如同上学时老师检查作业般。但发圈何尝不像是写作业一样呢&#xff1f;有许多小号需发几十上百条朋友圈&#xff0c;令人感到枯燥、浪费时间。再加上我们还有其他事务要处理&#xff0c;例如服装店老板…

让你不再疑惑ai绘画生成器有哪些

有一天&#xff0c;设计师小李接到了一份任务&#xff0c;要在短时间内完成一幅复杂的插画。小李感到非常苦恼。于是&#xff0c;他开始寻找一种新的解决方案。通过搜索和咨询同事&#xff0c;小李发现通过使用ai绘画工具可以提高快速绘制图画的速度.那么&#xff0c;你知道最新…

paddlespeech 声纹识别embedding向量提取

参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md 注意 1&#xff09;安装paddlespeech&#xff0c;参考&#xff1a; https://blog.csdn.n…

儿童牙刷语音方案,低功耗语音芯片NV040C,支持UART指令

随着人们对生活品质的追求越来越高&#xff0c;家庭中的日常用品也开始注重便携性、功能性与智能化。牙刷作为家庭必备的清洁用品&#xff0c;同样也在走向智能化的方向。为此&#xff0c;市场上出现了一些支持语音指令的儿童牙刷语音方案&#xff0c;其中低功耗语音芯片NV040C…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语&#xff1a; 什么是 类型接口&#xff1f; 在面向对象语言中&#xff0c;接口&#xff08;Interfaces&#xff09;是一个很重要的概念&#xff0c;它是对行为的抽象&#xff0c;而具体如何行动需要由类&#xff08;classes&#xff09;去实现&#xff08;implement&#x…

从“裸辞”到“终于找到理想工作”,面试了37家公司,经过5个月的时间终于如愿以偿。

软件测试行业裸辞5个月&#xff0c;面试了37家公司&#xff0c;终于找到理想工作了... 在软件测试行业里工作已经有7年的时间了。然而&#xff0c;在今年初&#xff0c;我因为一些原因选择了离开原来的公司&#xff0c;成为了一名“裸辞族”。我并不后悔这个决定&#xff0c;因…

QT Creator上位机学习(一)基本类别及主体框架解析

系列文章目录 文章目录 系列文章目录前言基础认识多种项目3种基类文件管理编译 项目程序项目管理文件UI文件信号与槽主程序窗体头文件窗体源文件 前言 之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等&#xff0c;但大多只是对网上的程序进行拼接&#xff0c;这…

15.RocketMQ中的负载均衡

1.3负载均衡 1.3.1什么是负载均衡 负载均衡(Load Balance)是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载&#xff0c;达到最优化资源使用&#xff0c;避免单台服务器过载。 RocketMQ中的负载均衡主要可以分为生产者发送消息的负载均衡和消费者订阅消息的负载均衡…

记一次phpMyAdmin弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量phpMyAdmin登录请求&#xff0c;现需根据流量情况进行…

leetcode887. 鸡蛋掉落(动态规划-java)

鸡蛋掉落 leetcode887. 鸡蛋掉落题目描述暴力递归 二分查找代码演示 动态规划代码演示 动态规划专题 leetcode887. 鸡蛋掉落 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/super-egg-drop 题目描述 给你 k 枚相同的鸡…

Python实现所有英雄皮肤图片采集,超高清

目录标题 前言环境使用:模块使用:代码基本四个步骤:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: requests —> 数据请求模块 需要安装 re 正则表达式 内置模块 不需要安装 os 文件操作模块 内置模块 不需…

记一次Weblogic控制台弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量Weblogic控制台登录请求&#xff0c;现需根据流量情况…

Rancher集群搭建

前言 随着容器的普及和Kubernetes 的日渐成熟&#xff0c;企业内部运行多个Kubernetes 集群已变得颇为常见&#xff0c;然而部署kubernetes集群的方式也多样化&#xff0c;二进制部署、rancher、kubeadm、minikube等。然而本篇文章主要讲解的是如何使用rancher快速部署一个k8s集…

Linux:LAMP搭建(全源码包安装)

LAMP 就是 Linux Apache Mysql PHP/Python 目录 Linux安装 Apache安装 Mysql安装 安装PHP 安装PHP扩展包 编译安装PHP PHP 添加优化模块 测试网页协同工作 Linux安装 虚拟机安装 (1条消息) VMware&#xff1a;安装centos7_鲍海超-GNUBHCkalitarro的博客-CSD…