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

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录

  • 前言
    • 优先级顺序
    • 优先级顺序(详解)
      • 1. 精确匹配(Exact Match)
      • 2. 正则表达式匹配(Regex Match)
      • 3. 前缀匹配(Prefix Match)
    • 匹配规则的综合应用
    • 验证优先级

前言

location的作用
在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹配方法,包括前缀匹配、精确匹配和正则表达式匹配。了解这些匹配方法的优先级是优化配置的关键。

优先级顺序

下列以优先级从高到低排序:
= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!和!* 分别为区分大小写不匹配及不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到。

优先级顺序(详解)

1. 精确匹配(Exact Match)

精确匹配是 location 指令中优先级最高的匹配方法。它通过使用 = 修饰符来实现,表示只匹配完全相同的 URI。

配置示例

location = /app {# 精确匹配 URI 为 /app 的请求
}

优先级: 最高。如果有一个精确匹配的 location,Nginx 会优先使用它,不会进一步考虑其他匹配规则。
用途: 用于需要精确匹配特定 URI 的场景,例如特定页面或 API 端点。

2. 正则表达式匹配(Regex Match)

正则表达式匹配具有较高的优先级,在精确匹配之后进行处理。Nginx 使用 ~ 或 ~* 修饰符来表示正则表达式匹配,其中 ~ 区分大小写,而 ~* 不区分大小写。

配置示例

location ~ \.php$ {# 匹配所有以 .php 结尾的 URI
}
location ~* \.(jpg|jpeg|png|gif)$ {# 匹配所有以 .jpg、.jpeg、.png 或 .gif 结尾的 URI,大小写不敏感
}

3. 前缀匹配(Prefix Match)

前缀匹配是最常用的匹配方法,适用于 URI 开头的字符串匹配。没有使用 =、~ 或 ~* 修饰符的 location 指令默认为前缀匹配。

配置示例

location /images/ {# 匹配以 /images/ 开头的 URI
}
location /static/ {# 匹配以 /static/ 开头的 URI
}

优先级: 最低。在精确匹配和正则表达式匹配之后,如果 URI 以指定的前缀开头,则使用前缀匹配。
用途: 用于匹配和处理以特定路径开头的 URI,如静态资源目录、应用路径等。

匹配规则的综合应用

在实际应用中,NGINX 的匹配优先级可以组合使用来实现更复杂的逻辑。例如,可以结合精确匹配、正则表达式匹配和前缀匹配来处理不同类型的请求。

配置示例

location = / {# 精确匹配根路径
}
location ~ \.php$ {# 正则匹配 PHP 文件
}
location /images/ {# 前缀匹配以 /images/ 开头的请求
}

在上面的配置中,请求 / 会直接匹配到第一个 location 块。
请求 /example.php 会匹配到正则表达式匹配的 location 块。
请求 /images/logo.png 会匹配到前缀匹配的 location 块。

验证优先级

我们可以简单配置nginx的配置文件来验证location匹配符的优先级

配置文件

    server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {default_type text/html;return 200 "location /";}location = / {default_type text/html;return 200 "location = /";}location ~  / {default_type text/html;return 200 "location ~ /";}location ~* / {default_type text/html;return 200 "location ~* /";}
}

访问
在这里插入图片描述
去掉

        location = / {default_type text/html;return 200 "location = /";}

再访问
在这里插入图片描述
去掉

        location ~  / {default_type text/html;return 200 "location ~ /";}

再访问
在这里插入图片描述
去掉

        location ~* / {default_type text/html;return 200 "location ~* /";}

再访问
在这里插入图片描述

相关文章:

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中&#xff0…...

Vivado编译报错黑盒子问题

1 问题描述 “Black Box Instances: Cell **** of type ** has undefined contents and is considered a back box. The contents of this cell must be defined for opt_design to complete successfully.” 检查工程代码提示的模块,该模块为纯手写的Veril…...

【建造者模式】

建造者模式 Builder Pattern 属于创建型模式是将一个复杂对象的构建与它的标识分离,使得同样的构建过程可以创建不同的表示关键点:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解 实现 demo 需要构建的对象 Data pu…...

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中,表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能,通过精准识别和处理各种通用表格,显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在…...

【Hot100】LeetCode—394. 字符串解码

目录 1- 思路栈实现四种情况处理 2- 实现⭐394. 字符串解码——题解思路 3- ACM 实现 原题链接:394. 字符串解码 1- 思路 栈实现四种情况处理 ① 遇到数字,进行倍数相加 、②遇到左括号,压栈之前的元素、③遇到右括号弹出,栈进行…...

12. 如何在MyBatis中进行分页查询?常见的分页实现方式有哪些?

在MyBatis中,分页查询是一种常见的需求,尤其是在处理大数据量的情况下。MyBatis本身不直接提供分页功能,但可以通过以下几种常见的实现方式来实现分页查询。 1. 手动分页 这是最基本的分页方式,直接在SQL语句中添加分页参数。不同…...

@[TOC](力扣题目-滑动窗口-qsort排序-二分法查找)

通信 LCR 009. 乘积小于 K 的子数组268. 丢失的数字287. 寻找重复数 LCR 009. 乘积小于 K 的子数组 已解答 滑动窗口 给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。 示例 1: 输入: nums [10,5,2,6], k 100 输出: 8 解释…...

Docker容器相关命令

Docker是一种容器化技术,可以帮助用户更轻松地创建、部署和管理容器。下面是一些常见的Docker容器管理任务: 创建容器:使用Docker镜像创建一个新的容器。 docker run image_name列出容器:查看当前运行的容器列表。 docker ps启动容…...

【老课推荐】基于LangChain和知识图谱的大模型医疗问答机器人项目

在当今数据驱动和人工智能主导的时代,大模型和知识图谱的结合是一个重要的研究和应用方向。大模型实战课程通过48课时,分为六个主要章节,涵盖了从基本概念到高级应用的多方面内容。学员将通过本课程学习如何使用LangChain和OpenAI进行开发&am…...

Adobe Sensei——自动化视频编辑、特效应用和素材增强,通过AI技术快速优化视频内容,自动修复视频质量、自动添加背景音乐或字幕

一、Adobe Sensei介绍 Adobe Sensei 是 Adobe 公司开发的一款基于人工智能和机器学习技术的平台,旨在增强其各种创意、文档和体验管理工具。Adobe Sensei 通过深度学习、计算机视觉、自然语言处理(NLP)等先进技术,帮助用户在 Ado…...

【AIGC数字人】EchoMimic:基于可编辑关键点条件的类人音频驱动肖像动画

GitHub:https://github.com/BadToBest/EchoMimic 论文: https://arxiv.org/pdf/2407.08136 comfyui: https://github.com/smthemex/ComfyUI_EchoMimic 相关工作 Wav2Lip Wav2Lip是一个开创性的工作 ,但输出会出现面部模糊或扭…...

变量数据类型 Day3

1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元,是存储数据的基本单元变量的组成包括:数据类型、变量名、值,后文会具体描述变量的本质作用就是去记录数据的,比如说记录一个人的身高、体重、年龄,就需要去…...

SpringBoot2:请求处理原理分析-RESTFUL风格接口

一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…...

[Linux][配置]Linux修改history存储的最大记录数

Linux修改History最大记录为20000行 sed -i s/^HISTSIZE1000/HISTSIZE20000/ /etc/profile source /etc/profile 在 Linux 系统中,HISTSIZE 环境变量用于定义历史记录的大小,即在终端中可以回溯的命令数量。默认情况下,这个值通常是 1000&…...

代码随想录 刷题记录-28 图论 (5)最短路径

一、dijkstra(朴素版)精讲 47. 参加科学大会 思路 本题就是求最短路,最短路是图论中的经典问题即:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。 接下来讲解最短路算法中的 d…...

大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

C++复习day04

一、函数重载 1.什么是函数重载? 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重 载了。 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用…...

[苍穹外卖]-04菜品管理接口开发

效果预览 新增菜品 需求分析 查看产品原型分析需求, 包括用到哪些接口, 业务的限制规则 业务规则 菜品名称必须是唯一的菜品必须属于某个分类下, 不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片 接口设计 根据类型查询分类接口 文件上传接口 …...

gitlab 启动/关闭/启用开机启动/禁用开机启动

文章目录 启动 gitlab关闭 gitlab查看 gitlab 运行状态启用 gitlab 开机启动禁用 gitlab 开机启动GitlabGit启动 gitlab hxstrive@localhost:~$ sudo gitlab-ctl start ok: run: alertmanager: (pid 65953) 0s ok: run: gitaly: (pid 65965) 0s ok: run: gitlab-exporter: (pi…...

中间件解析漏洞(附环境搭建教程)

⼀:IIS解析漏洞 环境资源: https://download.csdn.net/download/Nai_zui_jiang/89717504 环境安装 windows2003iis6 1.创建新的虚拟机 2.在下⼀步中选择我们的iso⽂件镜像 vm已主动识别到windows2003 3.产品密钥⽹上搜⼀个 密码自己设置一个简单的&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...