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配置80端口访问8080及项目名地址方法解析
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
扩展多台相同的Web服务器
Apr 01 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
nginx.conf配置文件结构小结
Apr 08 Servers
Linux中如何安装并部署Redis
Apr 18 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 Servers
基于docker安装zabbix的详细教程
Jun 05 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
windows系统安装配置nginx环境
Jun 28 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
php中文验证码实现示例分享
2014/01/12 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
python函数参数*args**kwargs用法实例
2013/12/04 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
年度考核自我评价
2014/01/25 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
同志主要表现材料
2014/08/21 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers