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服务器如何设置url链接
Mar 31 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
Vertica集成Apache Hudi重磅使用指南
Mar 31 Servers
nginx容器方式反向代理实战
Apr 18 Servers
Nginx HTTP跳转至HTTPS
May 15 Servers
Nginx利用Logrotate实现日志分割
May 20 Servers
阿里云服务器部署RabbitMQ集群的详细教程
Jun 01 Servers
使用Apache Camel表达REST服务的方法
Jun 10 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
云服务器部署 Web 项目的实现步骤
Jun 28 Servers
源码安装apache脚本部署过程详解
Sep 23 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时的知识积累总结
2013/06/07 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
Javascript注入技巧
2007/06/22 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JS功能代码集锦
2016/05/04 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
基于python中theano库的线性回归
2018/08/31 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Django实现文件上传和下载功能
2019/10/06 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
为什么要使用servlet
2016/01/17 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
员工福利申请报告
2015/05/15 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
员工工作心得体会
2019/05/07 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技