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已编译的nginx-添加新模块
Apr 01 Servers
Nginx URL重写rewrite机制原理及使用实例
Apr 01 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
nginx部署多前端项目的几种方法
May 25 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
KVM基础命令详解
Apr 30 Servers
nginx rewrite功能使用场景分析
May 30 Servers
windows server2008 开启端口的实现方法
Jun 25 Servers
Linux安装Docker详细教程
Jul 07 Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
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打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
简单上手Python中装饰器的使用
2015/07/12 Python
Python pandas常用函数详解
2018/02/07 Python
django之自定义软删除Model的方法
2019/08/14 Python
django实现模型字段动态choice的操作
2020/04/01 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
三个Unix的命令面试题
2015/04/12 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
优秀医生事迹材料
2014/02/12 职场文书
励志演讲稿大全
2014/08/21 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
合作意向书范本
2019/04/17 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android