nginx location优先级
网上查了下location的优先级规则,但是很多资料都说的模棱两可,自己动手实地配置了下,下面总结如下。
1. 配置语法
1> 精确匹配
location = /test {
...
}
2> 前缀匹配
- 普通前缀匹配
location /test {
...
}
- 优先前缀匹配
location ^~ /test {
...
}
3> 正则匹配
- 区分大小写
location ~ /test$ {
...
}
- 不区分大小写
location ~* /test$ {
...
}
2. 配置实例
1> 多个前缀匹配,访问/test/a,则先记住最长的前缀匹配,并继续匹配
location / {
root html;
index index.html index.htm;
}
location /test {
return 601;
}
location /test/a {
return 602;
}
命中的响应状态码
602
2> 前缀匹配和正则匹配,访问/test/a,则命中正则匹配
location / {
root html;
index index.html index.htm;
}
location /test/a {
return 601;
}
location ~* /test/a$ {
return 602;
}
命中的响应状态码
602
3> 优先前缀匹配和正则匹配,访问/test/a,则命中优先前缀匹配,终止匹配
location / {
root html;
index index.html index.htm;
}
location ^~ /test/a {
return 601;
}
location ~* /test/a$ {
return 602;
}
命中的响应状态码
601
4> 多个正则匹配命中,访问/test/a,则使用第一个命中的正则匹配,终止匹配
location / {
root html;
index index.html index.htm;
}
location ~* /a$ {
return 601;
}
location ~* /test/a$ {
return 602;
}
命中的响应状态码
601
5> 精确匹配和正则匹配,访问/test,精确匹配优先
location / {
root html;
index index.html index.htm;
}
location ~* /test {
return 602;
}
location = /test {
return 601;
}
命中的响应状态码
601
3. 总结:
- 搜索优先级:
精确匹配 > 字符串匹配( 长 > 短 [ 注: ^~ 匹配则停止匹配 ]) > 正则匹配( 上 > 下 )
- 使用优先级:
精确匹配 > (^~) > 正则匹配( 上 > 下 )>字符串(长 > 短)
解释:
- 先搜索有没有精确匹配,如果匹配就命中,终止匹配。
- 索前缀匹配,命中则先记住(可能命中多个),继续往下搜索,如果有优先前缀匹配符号“^~”,则命中优先前缀匹配,不再去检查正则表达式;反之则继续进行正则匹配,如果命中则使用正则表达式,如果没命中则使用最长的前缀匹配。
- 前缀匹配,长的优先;多个正则匹配,在上面的优先。
nginx location优先级的更多相关文章
- nginx——location 优先级
一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配 ...
- nginx location 优先级
location 顺序/优先级: location = > location 完整路径 > location ^~ 路径 > location ~,~* 正则顺序 > ...
- nginx location在配置中的优先级
location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通 ...
- NGINX location 在配置中的优先级
location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进 ...
- Nginx——location匹配与在配置中的优先级
1. location表达式类型 location ^~ /api/v7/ { proxy_next_upstream http_404 http_500 http_502 http_503 http ...
- (转)nginx location在配置中的优先级
原文:https://www.bo56.com/nginx-location%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E7%9A%84%E4%BC%98%E5%85%8 ...
- nginx location的优先级
原来一直以为location的优先级是先后顺序,结果有次项目中傻眼了,赶紧百度一下,下面的内容参考了这个链接 location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配 ...
- nginx location配置
nginx location配置 location在nginx中起着重要作用,对nginx接收到的请求字符串进行处理,如地址定向.数据缓存.应答控制.代理转发等location语法location ...
- nginx location匹配规则
谢谢作者的分享精神,原文地址:http://www.nginx.cn/115.html location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹 ...
随机推荐
- RHEL6.5和RHEL7 的区别(转)
Rhel6.5实验环境搭建 1)操作系统安装 RHEL7是一站式安装 2)网卡配置文件 RHEL6: /etc/sysconfig/network-scripts/ifcfg-eth0 RHEL7 ...
- 【题解】UVA11584 Partitioning by Palindromes
UVA11584 https://www.luogu.org/problemnew/show/UVA11584 暑假开始刷lrj紫/蓝书DP题 这几天做的一道 思路 预处理出所有的回文串是否存在 前提 ...
- IP地址获取当前地理位置(省份)的接口
腾讯的接口是 ,返回数组 http://fw.qq.com/ipaddress 返回值 var IPData = new Array("61.135.152.194"," ...
- Oracle数据库对象,同义词、序列、视图、索引
数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...
- 将某页面中ajax中获取到的信息放置到sessionStorage中保存,并在其他页面调用这些数据。
A页面代码: var obj = data.data; var infostr = JSON.stringify(obj);//转换json sessionStorage.obj = infostr; ...
- c#实现的HTTP服务端
这次在整理一个服务组件的时候,需要涉及到HTTP的请求,HTTP是应用层,建立在TCP之上的.因此,可以用TCP服务端接收HTTP请求,只需要解析请求内容.HTPP有固定的格式,大家可以直接搜索.网上 ...
- Linux mongodb安装、启动、运行
1.下载 wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.4.tgz 2.安装 tar -zxvf ...
- JS定时器和单线程异步特性
首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时间执行一段代码,或者在给定的时间间隔内重复该代码.具体函数: setTimeout(callback, delay);/ ...
- c++cmb
#include<windows.h> #include<bits/stdc++.h> using namespace std; ]; int main() { printf( ...
- 判断无向图两点间是否存在长度为K的路径
#include <iostream> #include <vector> #define MAXN 5 using namespace std; struct edge { ...