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 31 Servers
nginx配置ssl实现https的方法示例
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 Servers
windows10 家庭版下FTP服务器搭建教程
Aug 05 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
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 图片验证码实现代码
2009/12/11 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Python实现多线程抓取妹子图
2015/08/08 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
Python初学者常见错误详解
2019/07/02 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
python获取Linux发行版名称
2019/08/30 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
厂长助理岗位职责
2013/12/27 职场文书
文化建设工作方案
2014/05/12 职场文书
大学生标准自荐书
2014/06/15 职场文书
Python学习之os包使用教程详解
2022/03/21 Python
Golang连接并操作MySQL
2022/04/14 MySQL