一、 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成功   ^~ 以指定的 模式开始的

最新文章

  1. openGL实现二维图形和三维图形
  2. Python 字符串
  3. 【processing】小代码5
  4. 静态代码检查工具-PMD初学者入门篇
  5. 图像fft和wavelet变换矩阵和向量区别 dwt2和wavedec2联系
  6. 推荐几款web站点JS(JQeury)图表(饼图,柱图,线图)
  7. FPGA静态时序分析——IO口时序(Input Delay /output Delay)
  8. streams 日差管理及监控
  9. nodejs-fs使用
  10. SVN 密码破解,svn密码本地找回 忘记密码
  11. javascript 压缩空格代码演示
  12. #include <stdint.h>
  13. iOS开发针对对Masonry下的FPS优化讨论
  14. 带有 thead、tbody 以及 tfoot 元素的 HTML 表格
  15. 笔记:MyBatis 日志显示-log4j2
  16. image 标签src
  17. Java Collection 学习
  18. Optimal Milking POJ - 2112 (多重最优匹配+最小费用最大流+最大值最小化 + Floyd)
  19. perf使用示例2
  20. (笔记)Linux服务器中判断客户端socket断开连接的方法

热门文章

  1. PHP函数:PHP_SELF
  2. OFFSET & FETCH
  3. xgboost在windows上的安装
  4. C++Primer第5版学习笔记(一)
  5. 深入理解jvm之内存区域与内存溢出
  6. OpenOffice 服务开机启动
  7. (一)Eclipse 快捷键
  8. thinkphp 区分大小写的文件存在判断
  9. c#基础编程—泛型
  10. Unity3D 制作右上角小地图