nginx——location 优先级
一、 location 的匹配符
1.等于匹配符:=
等于匹配符就是等号,特点可以概括为两点:
精确匹配
不支持正则表达式
2.空匹配符
空匹配符的特点是:
匹配以指定模式开始的 URI
不支持正则表达式
3.正则匹配符:~
正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,
一般来说~是指:区分大小写的正则匹配
而~*表示: 不区分大小写的正则匹配
但是对于一些对大小写不敏感的操作系统,这两者没有区别。
^~表示只匹配字符串,不查询正则表达式
二、优先级的实例
location ~ ^/poechant$ {
return ;
} location =/poechant {
return ;
}
结果显示 403 forbdden
location ~ ^/poechant$ {
return ;
} location /poechant {
return ;
}
结果显示 400 Bad Request
根据以上可以大体判断了解 location的优先级别以及流程。
还需要验证是不是事实
1、首先精确匹配 也就是带着 =的location 找到之后直接结束解析过程并返回。
2、其次匹配普通匹配,并记录最长的匹配,此时首先不返回。匹配最长的。
3、再匹配正则表达式,以~开始的,正则表达式,按照顺序从上到下匹配,找到匹配之后立即返回,没有匹配到则返回普通匹配的最长的匹配。如果普通匹配没有匹配到页面,则返回 404 not found。
优先级别 精准匹配 = >正则匹配 >普通匹配(比如 /a /a/1.jpg 等 包括 ^~表示之匹配字符串不查询正则表达式)
#
location / {
return ;
} #
#location /a/ {
# return ;
#} #
location ~* \.jpg$ {
return ;
} #
location ~ ^/a/ {
return ;
} #
location ^~ /a/ {
return ;
} #
location /a/.jpg {
return ;
} #
location = /a/.jpg {
return ;
}
测试的时候,先要将#2全部注释掉,不然会认为#2 与#4 完全一样。会提示:重复配置,提示如下
[emerg]: duplicate location "/a/" in D:\nginx-0.8./conf/nginx.conf:
每一次都访问 localhost:8080/a/1.jpg
第一次访问 说明匹配 #7 精准匹配
把7注释掉 然后访问 说明 3正则匹配匹配成功
接下来互换3跟4
#
location ~ ^/a/ {
return ;
} #
location ~* \.jpg$ {
return ;
}
再一次访问 说明正则表达式 是按照从上往下的顺序匹配的 匹配成功就停止 同时也验证了 匹配的顺序是 首先 匹配普通匹配 并记录最长的匹配 然后匹配正则表达式 ,找到之后
停止匹配。
把 3、4注释掉 访问 匹配 6成功 普通匹配匹配最长的
注释掉 6之后 匹配5成功 ^~ 以指定的 模式开始的
nginx——location 优先级的更多相关文章
- nginx location优先级
目录 1. 配置语法 2. 配置实例 3. 总结: 网上查了下location的优先级规则,但是很多资料都说的模棱两可,自己动手实地配置了下,下面总结如下. 1. 配置语法 1> 精确匹配 lo ...
- 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匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹 ...
随机推荐
- Struts1、Struts2和SpringMVC剖析【转载】
前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MV ...
- hdoj 1045 Fire Net
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- [置顶] c# asp.net 修改webconfig文件 配置
c# asp.net 修改webconfig文件 配置 #region 修改config文件 /// <summary> /// 修改config文件(AppSetting节点) /// ...
- C#中的线程(中)-线程同步
1.同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程 ...
- div页面居中(上下左右)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(7)-MVC与EasyUI DataGrid
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(7)-MVC与EasyUI DataGrid 没有源码的同学跳到第六讲下载源码再来. 我们需要漂亮的UI, ...
- 怎样给filter加入自己定义接口及调用
本样例是在VirtualCamera的基础上加入的自己定义接口用来实现exe控制osd的显示. 1. 接口部分 #ifndef __H_MyFilter__#define __H_MyFilter__ ...
- linux块设备IO栈浅析
http://www.sysnote.org/2015/08/06/linux-io-stack/
- Execution Contexts (执行上下文)
本章我们一起讨论一下ECMAScript的执行上下文及相关可执行代码的各种类型.so...什么是执行上下文?我们来看看定义: 每次当控制器转到ECMAScript可执行代码的时候, 即会进入到一个执行 ...
- 在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对于该问题的解决方法也是“见机行事”。
当一个img标签没得图片时,在firox中,即使给img标签设置了固定高度和宽度,img标签还是不会站位: 解决方法一:直接将img设置为块状元素:即,设置img为“display:block;”.在 ...