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配置文件使用环境变量的操作方法
Jun 02 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
Tomcat starup.bat 脚本实现开机自启动
Apr 20 Servers
Windows和Linux上部署Golang并运行程序
Apr 22 Servers
Windows Server 2019 域控制器安装图文教程
Apr 28 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
nginx lua 操作 mysql
May 15 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
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
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
微信小程序开发的基本流程步骤
2019/01/31 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
python实现的简单窗口倒计时界面实例
2015/05/05 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
自动化专业职业生涯规划书范文
2014/01/16 职场文书
给孩子的新年寄语
2014/04/08 职场文书
学校运动会广播稿
2014/10/11 职场文书
运动会开幕词
2015/01/28 职场文书
千手观音观后感
2015/06/03 职场文书
创业计划书之面包店
2019/09/12 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python