一、 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 优先级的更多相关文章

  1. nginx location优先级

    目录 1. 配置语法 2. 配置实例 3. 总结: 网上查了下location的优先级规则,但是很多资料都说的模棱两可,自己动手实地配置了下,下面总结如下. 1. 配置语法 1> 精确匹配 lo ...

  2. nginx location 优先级

    location 顺序/优先级:     location = > location 完整路径 > location ^~ 路径 > location ~,~* 正则顺序 > ...

  3. nginx location在配置中的优先级

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通 ...

  4. NGINX location 在配置中的优先级

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进 ...

  5. Nginx——location匹配与在配置中的优先级

    1. location表达式类型 location ^~ /api/v7/ { proxy_next_upstream http_404 http_500 http_502 http_503 http ...

  6. (转)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 ...

  7. nginx location的优先级

    原来一直以为location的优先级是先后顺序,结果有次项目中傻眼了,赶紧百度一下,下面的内容参考了这个链接 location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配 ...

  8. nginx location配置

    nginx location配置   location在nginx中起着重要作用,对nginx接收到的请求字符串进行处理,如地址定向.数据缓存.应答控制.代理转发等location语法location ...

  9. nginx location匹配规则

    谢谢作者的分享精神,原文地址:http://www.nginx.cn/115.html location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹 ...

随机推荐

  1. 什么要缓存curl资源

    在看公司的代码框架底层时,发现了一个问题,如下: 代码中调用接口时,使用的是curl,框架将curl资源以IP :端口的形式缓存了下来,例如: 10.10.10.10:80     curl1 10. ...

  2. NIO组件Selector工作机制详解(上)

    转自:http://blog.csdn.net/haoel/article/details/2224055 一.  前言 自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但 ...

  3. 【Android - 进阶】之MultiDex的配置

    一.什么是MultiDex 随着时代的进步,人们对手机 APP 的需求越来越大,越来越苛刻,很多APP都变得很大,再加上APP都不可避免的需要导入一些框架.第三方类库等等,就更加大了项目的整体文件体系 ...

  4. HUNNU--湖师大--11409--Skill

    Skill Yasser is an Egyptian coach; he will be organizing a training camp in Jordan. At the end of ca ...

  5. javascript 可控速度的上下拉菜单

    样式部分 <style type="text/css"> *{ margin:0; padding:0; border:none; background:none;} ...

  6. 再回首,Java温故知新(十):数组

    数组是程序中用来存储同一类型值的集合,基本所有编程语言中都有这种类型存在.声明数组时需要指出数组类型和数组变量名,初始化后数组的长度不可变,使用过程中通过下标来访问数组中的元素,示例代码如下: int ...

  7. 移动端 设置 小于12px 字体 初探

    1.移动端字号规范 2. 百度字号调研 3. 绕过12px 限制 4. 缩放 5. chrome  字号

  8. Android 开发实践 ViewGroup 实现左右滑出窗口(一)

    利用假期把以前做的东西总结整理一下,先从简单的开始吧.实现的效果是这样的:   做了个截屏动画,比例有点不对了,凑合着看吧. 整个窗口有3部分组成,中间的主界面是个列表,左边的滑出界面是个菜单,右边的 ...

  9. CGLIB学习笔记

    0 概述 CGLIB基于ASM实现.提供比反射更为强大的动态特性.使用CGLIB可以非常方便的实现的动态代理. 0.1 CGLIB包结构 net.sf.cglib.core    底层字节码处理类. ...

  10. WebForm开发常用代码

    1.获取服务器绝对路径: public static string GetMapPath(string strPath) { if (HttpContext.Current != null) { re ...