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处理http请求实现过程解析
Mar 31 Servers
Nginx安装完成没有生成sbin目录的解决方法
Mar 31 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
学习nginx基础知识
Sep 04 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Apache Hudi集成Spark SQL操作hide表
Mar 31 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
Nginx的gzip相关介绍
May 11 Servers
详解Nginx的超时keeplive_timeout配置步骤
May 25 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 Servers
nginx之queue的具体使用
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
PHP6 mysql连接方式说明
2009/02/09 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JS中type="button"和type="submit"的区别
2017/07/04 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
python多行字符串拼接使用小括号的方法
2020/03/19 Python
python实现中文文本分句的例子
2019/07/15 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python post请求实现代码实例
2020/02/28 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
写给女生的道歉信
2014/01/08 职场文书
接待员岗位责任制
2014/02/10 职场文书
教师个人培训总结
2015/02/11 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
学校会议通知范文
2015/04/15 职场文书
奖励申请报告范文
2015/05/15 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
Android中的Launch Mode详情
2022/06/05 Java/Android