当前位置: 首页 > news >正文

Nginx rewrite 执行顺序(草稿,下次继续编辑)

个人结论:

        1.server层ngx_http_rewrite_module模块相关指令按照配置顺序依次执行;

        2.server层执行完break指令后,该层级所有跟ngx_http_rewrite_module模块相关的指令都不再被执行,但是不影响其他模块(例如:https://zhuanlan.zhihu.com/p/357272929 的例子

 location = /testbreak {break;return 200 $request_uri;proxy_pass http://127.0.0.1:8080/other;}

,return也属于这块模块,但是之后跟上的proxy_pass 这并不属于这个模块,所以会生效,最终回到/other),但不影响location层ngx_http_rewrite_module模块相关指令的继续执行,所以请求处理过程会继续向下;

        3.location层执行完break指令后,当前server所有层级跟ngx_http_rewrite_module模块相关的指令都不再被执行(换言之就是,最终URI就这吧,别再找了),nginx根据最终请求路径将请求结果返回给客户端;

        4.无论在哪个层级执行完return指令后,请求处理过程都会立刻终止并将指定的code、重定向URL或响应正文文本返回给客户端。

        5.虽然Nginx在循环重写过程中最多是可以执行11次循环,但在第11次循环中执行rewrite后会抛500异常,所以严格意义上来说,正常情况下Nginx请求重写循环过程最多就是10次。强烈建议亲自做下测试10。

        6.rewrite regex /xxx break指令与单独break指令的中断效果一样,用IF语句满足匹配条件之后,执行rewrite regex /xxx,再执行break,估计效果相同。

        7.rewrite regex /xxx last指令是执行完重写后,立即开始(下一轮)匹配location,server层或当前location层其它指令不再执行。

例子暂时先这样:

     server {listen  80;server_name  www.cjlnginx.com;root  /tmp/cjl;index 1.txt;port_in_redirect off;location = /6.txt {rewrite ^  /7.txt;#因为7.txt没有匹配location了,接下来没>
有匹配rewrite了,所以虽然没有break但还是定格在7.txt}location = /3.txt {rewrite ^  /5.txt;rewrite ^  /6.txt last;#此处如果是break就显示6,last的话,
那么就会重新筛选从头代入location.也就是上面的7.txt.中断了下面的rewrite,如果
这条是最后一条的话(注释下面这条),即使不加last,也会新筛选从头代入location.所
以last的作用,感觉就是结束后续的rewrite模块.rewrite ^  /8.txt; #如果上面有标志,这个8.txt就不会执行,>
如果flag不填的话,则会顺序下来.}location = /2.txt {rewrite ^  /1.txt;#注意这里会继续到rewrite那了,如果break
直接就是1.txt}rewrite ^(/3.txt)$ /2.txt;#顺序执行下去3->2,2->5,5->2rewrite ^(/1.txt)$ /3.txt last;#break一样的效果,都会进入locat
ion,rewrite ^(/3.txt)$ /4.txt;rewrite ^(/2.txt)$ /5.txt;rewrite ^(/5.txt)$ /2.txt;#如果此处没有被,location = /2.txt捕
获或者在末尾加上break,就会死循环.rewrite ^(/6.txt)$ /9.txt  break;#rewrite ^(/7.txt)$ /4.txt;#如果打开这个和下面这条,你会发现又
回到rewrite了#rewrite ^(/4.txt)$ /9.txt  break;location ~ /6.txt { #这里不会进入,前面有= /6.txt 一直给拦截了
了,所以这里不会执行到rewrite ^  /8.txt;}}

请求http://www.cjlnginx.com/1.txt 和​​​​​​​http://www.cjlnginx.com/3.txt 看看结果.就能摸索出来.

相关文章:

Nginx rewrite 执行顺序(草稿,下次继续编辑)

个人结论: 1.server层ngx_http_rewrite_module模块相关指令按照配置顺序依次执行; 2.server层执行完break指令后,该层级所有跟ngx_http_rewrite_module模块相关的指令都不再被执行,但是不影响其他模块(例如:https://zhuanlan.zhihu.com/p/357…...

01.03周五F34-Day44打卡

文章目录 1. 这家医院的大夫和护士对病人都很耐心。2. 她正跟一位戴金边眼镜的男士说话。3. 那个人是个圆脸。4. 那个就是传说中的鬼屋。5. 他是个很好共事的人。6. 我需要一杯提神的咖啡。7. 把那个卷尺递给我一下。 ( “卷尺” 很复杂吗?)8. 他收到了她将乘飞机来的消息。9.…...

数字货币支付系统开发搭建:构建未来的区块链支付生态

随着数字货币的迅猛发展,越来越多的企业和机构开始关注如何搭建一个高效、安全、可扩展的数字货币支付系统。区块链技术因其去中心化、安全性高、透明性强等优势,已成为开发数字货币支付系统的首选技术。本文将深入探讨数字货币支付系统的开发和搭建过程…...

NLP CH3复习

CH3 3.1 几种损失函数 3.2 激活函数性质 3.3 哪几种激活函数会发生梯度消失 3.4 为什么会梯度消失 3.5 如何解决梯度消失和过拟合 3.6 梯度下降的区别 3.6.1 梯度下降(GD) 全批量:在每次迭代中使用全部数据来计算损失函数的梯度。计算成本…...

BurpSuite2024.11

新增功能 2024 年 11 月 25 日,版本 24.11 此版本引入了站点地图过滤器 Bambdas、匹配和替换 Bambdas、用于 API 扫描的动态身份验证令牌,以及用于入侵者攻击的增强负载管理。我们还进行了多项用户体验改进、性能改进和一些错误修复。 使用 Bambdas 过…...

亚信安全2025年第1期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件51起,本周勒索事件数量降至近一年来最低,需注意防范。从整体上看Ransomhub依旧是影响最严重的勒索家族;本周Acrusmedia和Safepay也是两个活动频繁的恶意家族,需要注意防范。本周&#…...

【工具进阶】使用 Nmap 进行有效的服务和漏洞扫描

在渗透测试中,Nmap 是一款功能强大的经典工具。其应用场景广泛,包括主机发现、端口扫描、服务检测等。然而,要充分发挥 Nmap 的潜力,需要遵循科学的流程和规范。本文将为您详细介绍如何使用 Nmap 进行高效的渗透测试,同…...

【工具推荐】XSS 扫描器-XSStrike

介绍 XSStrike 是一个跨站点脚本检测套件,配备四个手写解析器、一个智能有效载荷生成器、一个强大的模糊测试引擎以及速度极快的爬虫。XSStrike 不会像其他工具一样注入有效载荷并检查其是否有效,而是使用多个解析器分析响应,然后通过与模糊…...

Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)

概念 事务定义 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。…...

Zabbix5.0版本(监控Nginx+PHP服务状态信息)

目录 1.监控Nginx服务状态信息 (1)通过Nginx监控模块,监控Nginx的7种状态 (2)开启Nginx状态模块 (3)配置监控项 (4)创建模板 (5)用默认键值…...

C# 设计模式概况

什么是设计模式 大家熟知的GOF23种设计模式,源自《Design Patterns: Elements of Reusable Object-Oriented Software》一书,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著,四人组Gang of Four简称GOF。总结了在面向…...

Nginx 配置 SSL(HTTPS)详解

Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。 随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…...

论文解读之Generative Dense Retrieval: Memory Can Be a Burden

本次论文解读,博主带来生成式稠密检索:记忆可能成为一种负担的论文分享 一、简介 生成式检索根据给定的查询,自回归地检索相关的文档标识符,在小规模的文档库中表现不错,通过使用模型参数记忆文档库,生成…...

RTC:实时时钟

RTC:实时时钟 1、实时时钟2、闹钟中断3、秒中断4、输出功能5、BKP的读写6、BKP的侵入事件 1、实时时钟 ①RTC.c #include "RTC.h"/*** brief:RTC初始化函数*/ RCC_PeriphCLKInitTypeDef RTCPeriphClkInit; //RTC时钟配置结构体 RTC_HandleT…...

mqtt python rtsp拉流图传测试

GitHub - robmarkcole/mqtt-camera-streamer: Stream images from a connected camera over MQTT, view using Streamlit, record to file and sqlite 用这个项目,按照readme配置,把config里面的ip配置成接收端的ip地址。 该装的包装完之后&#xff0c…...

win32汇编环境,对话框程序中通过资源显示bmp图像

;运行效果 ;win32汇编环境,对话框程序中通过资源显示bmp图像 ;通过资源的方式,会把图像固定在exe文件里,会变大。通过读取文件的方式,没有固定在exe文件里,也可以随时换图像文件,所以exe文件较小 ;直接抄进RadAsm可编译…...

《探索人工智能的多元学派:符号主义、连接主义与行为主义》

在人工智能发展的进程中,不同学派从各自的角度诠释着智能的本质。其中符号主义、连接主义和行为主义学派占据着重要地位,它们以独特的方式推动着人工智能的发展。 符号主义学派:逻辑推理的核心 符号主义学派认为人工智能源于对逻辑符号的处…...

2024年终总结及计划

24年收获不少,早就想总结下,但是有的问题不想去思考,也不想去面对,就晚了几天,趁着加班总结反思下。 一、计划完成情况 1、生活 ①运动:继续坚持每周慢跑15公里,这是必须要做的。另外&#x…...

数据挖掘——关联规则挖掘

数据挖掘——关联数据挖掘 关联数据挖掘关联规则关联规则挖掘问题:具体挖掘过程Apriori 产生关联规则 关联数据挖掘 关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。 关联规则反映一个事物与…...

JVM实战—9.线上FGC的几种案例

大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致频繁FGC(优化反射的软引用被每次YGC回收) 4.线上系统每天数十次FGC导致频繁卡顿的优化(大对象问题…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...