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 过滤静态资源文件的访问日志的实现
Mar 31 Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
排查Tomcat进程假死的问题
May 06 Servers
windows系统安装配置nginx环境
Jun 28 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 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
ftp类(myftp.php)
2006/10/09 PHP
paypal即时到账php实现代码
2010/11/28 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
new修饰符是起什么作用
2015/06/28 面试题
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
环境科学专业个人求职信
2013/12/15 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
说明书格式及范文
2014/05/07 职场文书
思想作风建设心得体会
2014/10/22 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
教师个人发展总结
2015/02/11 职场文书
房租涨价通知
2015/04/23 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏
java实现面板之间切换功能
2022/06/10 Java/Android