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匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹 ...
随机推荐
- CentOS 6.5 下安装 Redis 2.8.7(转)
转自:http://www.cnblogs.com/haoxinyue/p/3620648.html CentOS 6.5 下安装 Redis 2.8.7 wget http://download.r ...
- Spring3 M2 quartz-2.1.7 解决bean不能注入问题
我们要达到这样的效果 public class CancelUnpaidOrderTask implements Job { @Autowired private AppOrderService or ...
- Java中如何使用Redis做缓存
基本功能测试 1.程序基本结构 2.主要类 1)功能类 package com.redis; import java.util.ArrayList; import java.util.Iterator ...
- 用java写随机出题
import java.io.*; //输入函数包 public class hello{ public static void main(String args[]){ String s=" ...
- 一句话菜刀获取ip详细信息
<?php $ip="你要查的ip"; $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip ...
- mysql内核源代码深度解析 缓冲池 buffer pool 整体概述
http://blog.csdn.net/cjcl99/article/details/51063078
- java EE 学习
http://blog.csdn.net/liushuijinger/article/category/1342030/1
- hadoop小文件合并
1.背景 在实际项目中,输入数据往往是由许多小文件组成,这里的小文件是指小于HDFS系统Block大小的文件(默认128M), 然而每一个存储在HDFS中的文件.目录和块都映射为一个对象,存储在Nam ...
- [转] CSS float 浮动属性
http://www.cnblogs.com/polk6/p/3142187.html CSS float 浮动属性 本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式: ...
- [转] 函数编程之闭包漫谈(Closure)
在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...