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 多个location转发任意请求或访问静态资源文件的实现
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
使用goaccess分析nginx日志的详细方法
Jul 09 Servers
学习nginx基础知识
Sep 04 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
centos环境下nginx高可用集群的搭建指南
Jul 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/02 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
Python入门学习指南分享
2018/04/11 Python
python 将md5转为16字节的方法
2018/05/29 Python
python 把列表转化为字符串的方法
2018/10/23 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
django框架ModelForm组件用法详解
2019/12/11 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
为什么说python更适合树莓派编程
2020/07/20 Python
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
《与朱元思书》的教学反思
2014/04/17 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
廉政承诺书
2015/01/19 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书