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 ~* /";
        }

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1658.将x减到0的最小操作数

题目 链接:leetcode链接 思路分析(滑动窗口) 题目要求从最左边或者最右边移除元素,需要思考两侧,这是比较麻烦的。 正难则反,我们逆向思维一下,最后剩余的元素是不是中间的连续区间&#xf…

服务器数据恢复—OneFS文件系统下数据被删除的数据恢复案例

服务器数据恢复环境&故障: EMC NAS(Isilon S200),共3个节点,每个节点配置12块STAT硬盘。数据分两部分:一部分数据为vmware虚拟机(WEB服务器),通过NFS协议共享到ESX主…

Subclass-balancing Contrastive Learning for Long-tailed Recognition

文章目录 SCL(supervised contrastive learning)1. 监督对比学习(SCL)的基本概念2. SCL的损失函数3. 长尾数据集的问题4. k-正样本对比学习(KCL)的引入5. 总结 SBCL举例说明:狗的分类 关键点:划分为多个子类…

Golang | Leetcode Golang题解之第386题字典序排数

题目&#xff1a; 题解&#xff1a; func lexicalOrder(n int) []int {ans : make([]int, n)num : 1for i : range ans {ans[i] numif num*10 < n {num * 10} else {for num%10 9 || num1 > n {num / 10}num}}return ans }

性能测试经典案例解析——政务查询系统

各位好&#xff0c;我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的主页 道普云 文章内容具有一定门槛&#xff0c;建议先赞再收藏慢慢学习&#xff0c;有不懂的问题欢迎私聊我。 希望这篇文章对想提高软件测试水平的你有所帮…

11--kubernetes的Ingress应用

前言&#xff1a;本章主要记录ingress暴露服务方式&#xff0c;会详细解释其原理及两种网络模式应用实操。 1、Ingress概念详解 Kubernetes 暴露服务的方式目前只有三种&#xff1a;LoadBlancer Service、NodePort Service、Ingress&#xff0c;Service属于4层负载均衡&#…

线程相关内容

线程 一、介绍二、thread库1、构造函数&#xff08;1&#xff09;函数&#xff08;2&#xff09;说明&#xff08;3&#xff09;注意 2、join函数3、detach4、joinable函数5、get_id函数 三、mutex的种类1、mutex&#xff08;1&#xff09;介绍&#xff08;2&#xff09;lock&a…

水晶连连看 - 无限版软件操作说明书

水晶连连看 – 无限版游戏软件使用说明书 文章目录 水晶连连看 – 无限版游戏软件使用说明书1 引言1.1 编写目的1.2 项目名称1.3 项目背景1.4 项目开发环境 2 概述2.1 目标2.2 功能2.3 性能 3 运行环境3.1 硬件3.2 软件 4 使用说明4.1 游戏开始界面4.2 游戏设定4.2.1 游戏帮助4…

长短期记忆神经网络-LSTM回归预测-MATLAB代码实现

一、LSTM简介&#xff08;代码获取&#xff1a;底部公众号&#xff09; 长短期记忆神经网络&#xff08;Long Short-Term Memory, LSTM&#xff09;是一种循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;的变体。相比于传统的RNN&#xff0c;LSTM能够更好…

如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐

《使命召唤4&#xff1a;现代战争》&#xff08;Call of Duty 4: Modern Warfare&#xff09;是由Infinity Ward开发并于2007年发行的第一人称射击游戏。该游戏是《使命召唤》系列的第四部作品&#xff0c;是一款非常受欢迎的游戏之一&#xff0c;《使命召唤4&#xff1a;现代战…

【Linux操作系统】线程控制

目录 一、线程创建二、线程等待三、线程退出四、线程的优缺点五、多线程的创建六、C11的多线程七、线程分离 一、线程创建 使用接口pthread_create创建新线程&#xff0c;头文件是pthread.h #include <iostream> #include <unistd.h> #include <pthread.h>…

2024国赛数学建模-模拟火算法(MATLAB 实现)

模拟退火算法 1.1 算法原理 模拟退火算法的基本思想是从一给定解开始 ,从邻域 中随机产生另一个解 ,接受 Metropolis准则允许目标函数在 有限范围内变坏 ,它由一控制参数 t决定 ,其作用类似于物 理过程中的温度 T,对于控制参数的每一取值 ,算法持续进 行“产生 —判断 —接受…

部署Apache网站

简易部署自己的apache网站 写在前面&#xff1a;先安装好mysql&#xff0c;再来搭建站点 1.安装php [rootlocalhost ~]# yum install php -y ##安装了php&#xff0c;默认会和apache结合工作2.创建文件编写php网页代码 [rootlocalhost ~]# vim /var/www/html/index.php ##创…

uniapp交互反馈

页面交互反馈可以通过:uni.showToast(object)实现,常用属性有 ioc值说明 值说明success显示成功图标&#xff0c;此时 title 文本在小程序平台最多显示 7 个汉字长度&#xff0c;App仅支持单行显示。error显示错误图标&#xff0c;此时 title 文本在小程序平台最多显示 7 个汉字…

【C++进阶】hash表的封装

文章目录 hash表哈希表的关键组成部分哈希表的优缺点优点&#xff1a;缺点&#xff1a; 常见应用场景 开放定址法实现hash表负载因子 (Load Factor)负载因子的意义负载因子的影响再散列 (Rehashing)示例 整体框架insertFinderasehash桶封装框架insertfinderase~HashTable() 总结…

Apache ShardingSphere数据分片弹性伸缩加解密中间件

Apache ShardingSphere Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。 软件背景 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding…

git 提交自动带上storyid

公司里的运维团队的产品经理&#xff0c;那老六提出说要在每个提交带上的jira storyid或者bugid&#xff0c;不用他自己弄不顾他人麻烦&#xff0c;真想问候他的xx。不过既然已经成为定局&#xff0c;还是想想有没有其他办法。经一番调研&#xff0c;网上有比较零碎的信息&…

Nginx 负载均衡+高可用 集群部署(Keepalived+LVS DR模式)

一、LVS负载均衡简介 1.1 LVS基本介绍 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导开发的开源负载均衡项目&#xff0c;目前LVS已经被集成在Linux内核中。该项目在Linux内核中实现了基于IP地址的请求数据负载均衡调度方…

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准&#xff0c;以太网协议定义了数据帧在以太网上的传输标准&#xff0c;了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备&#xff0c;了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…

CTFHub技能树-Git泄漏-Stash

目录 一、前提知识 1.什么是git stash 2.git文件目录结构 3.git中对象指向 二、解题过程 方法一&#xff1a;使用GitHack 方法二&#xff1a;使用Git_Extract工具&#xff0c;这个是自动解析不用git stash等操作&#xff0c;直接得到flag 当前大量开发人员使用git进行版本…