nginx location优先级的深入讲解


Posted in Servers onMarch 31, 2021

location表达式类型

~ 表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
= 进行普通字符精确匹配。也就是完全匹配。
@ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location优先级说明

在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

以下是按优先级排列说明:

第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
第三优先级:正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
第四优先级:常规字符串匹配类型。按前缀匹配。

location优先级示例 配置项如下:

location = / {
# 仅仅匹配请求 /
[ configuration A ]
}

location / {
# 匹配所有以 / 开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。如果有正则表达式可以匹配,则
# 优先匹配正则表达式。
[ configuration B ]
}

location /documents/ {
# 匹配所有以 /documents/ 开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。
#如果有正则表达式可以匹配,则优先匹配正则表达式。
[ configuration C ]
}

location ^~ /images/ {
# 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。所以,即便有符合的正则表达式location,也
# 不会被使用
[ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
# 匹配所有以 gif jpg jpeg结尾的请求。但是 以 /images/开头的请求,将使用 Configuration D
[ configuration E ]
}

请求匹配示例

/ -> configuration A
/index.html -> configuration B
/documents/document.html -> configuration C
/images/1.gif -> configuration D
/documents/1.jpg -> configuration E

注意,以上的匹配和在配置文件中定义的顺序无关。

总结

到此这篇关于nginx location优先级的文章就介绍到这了,更多相关nginx location优先级内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx开启Brotli压缩算法实现过程详解
Mar 31 Servers
nginx 多个location转发任意请求或访问静态资源文件的实现
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Nginx 常用配置
May 15 Servers
nginx访问报403错误的几种情况详解
Jul 23 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 #Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 #Servers
Nginx域名转发使用场景代码实例
Mar 31 #Servers
提升Nginx性能的一些建议
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 #Servers
Nginx配置80端口访问8080及项目名地址方法解析
Mar 31 #Servers
Nginx配置https原理及实现过程详解
Mar 31 #Servers
You might like
php程序效率优化的一些策略小结
2010/07/17 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
解放web程序员的输入验证
2006/10/06 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Django中URLconf和include()的协同工作方法
2015/07/20 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Python3 批量扫描端口的例子
2019/07/25 Python
Django之路由层的实现
2019/09/09 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
就业自荐书
2013/12/05 职场文书
九年级英语教学反思
2014/01/31 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
幼儿园开学通知
2015/04/24 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers