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 设置多个站跨域
Mar 09 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 Servers
centos8安装nginx1.9.1的详细过程
Aug 02 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
使用Nginx的访问日志统计PV与UV
May 06 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
修改Nginx配置返回指定content-type的方法
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做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
ie支持function.bind()方法实现代码
2012/12/27 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
node.js通过url读取文件
2020/10/16 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python开发之for循环操作实例详解
2015/11/12 Python
Python实现两款计算器功能示例
2017/12/19 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
pytorch数据预处理错误的解决
2020/02/20 Python
浅谈Python 函数式编程
2020/06/20 Python
python如何求圆的面积
2020/07/01 Python
python中pow函数用法及功能说明
2020/12/04 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
性能服装:HYLETE
2018/08/14 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
计算机专业毕业生求职信
2014/04/30 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
军训决心书范文
2015/09/22 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL