在nginx配置文件中,location主要有这几种形式:

1. 正则匹配 location ~ /abc { }

2. 不区分大小写的正则匹配 location ~* /abc { }

3. 匹配路径的前缀,如果找到停止搜索 location ^~ /abc { }

4. 精确匹配 location = /abc { }

5.普通路径前缀匹配 location /abc { }

先说优先级

4 > 3 > 2 > 1 > 5

再来解释一下各个格式

location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
[ configuration A ]
}

location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
[ configuration B ]
}

location /documents/ {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ configuration C ]
}

location ~ /documents/Abc {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ configuration CC ]
}

location ^~ /p_w_picpaths/ {

# 匹配任何以 /p_w_picpaths/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
[ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {

# 匹配所有以 gif,jpg或jpeg 结尾的请求
# 然而,所有请求 /p_w_picpaths/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
[ configuration E ]
}

location /p_w_picpaths/ {

# 字符匹配到 /p_w_picpaths/,继续往下,会发现 ^~ 存在
[ configuration F ]
}

location /p_w_picpaths/abc {

# 最长字符匹配到 /p_w_picpaths/abc,继续往下,会发现 ^~ 存在
# F与G的放置顺序是没有关系的
[ configuration G ]
}

location ~ /p_w_picpaths/abc/ {

# 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
[ configuration H ]
}

再来分析一下A-H配置的执行顺序。

1. 下面2个配置同时存在时

location = / {
[ configuration A ]
}

location / {
[ configuration B ]
}

此时A生效,因为=/优先级高于/

2. 下面3个配置同时存在时

location  /documents/ {
[ configuration C ]
}

location ~ /documents/ {

[configuration CB]

}

location ~ /documents/abc {
[ configuration CC ]
}

当访问的url为/documents/abc/1.html,此时CC生效,首先CB优先级高于C,而CC更优先于CB

3. 下面4个配置同时存在时

location ^~ /p_w_picpaths/ {
[ configuration D ]
}

location /p_w_picpaths/ {
[ configuration F ]
}

location /p_w_picpaths/abc {
[ configuration G ]
}

location ~ /p_w_picpaths/abc/ {
[ configuration H ]
}

当访问的链接为/p_w_picpaths/abc/123.jpg时,此时D生效。虽然4个规则都能匹配到,但^~优先级是最高的。

若^~不存在时,H优先,因为~/p_w_picpaths/ > /p_w_picpaths/

而/p_w_picpaths/和/p_w_picpaths/abc同时存在时,/p_w_picpaths/abc优先级更高,因为后者更加精准

4. 下面两个配置同时存在时

location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}

location ~ /p_w_picpaths/abc/ {

[ configuration H ]
}

当访问的链接为/p_w_picpaths/abc/123.jpg时,E生效。因为上面的规则更加精准。

转载于:https://blog.51cto.com/jacksoner/1982245

nginx的location优先级相关推荐

  1. nginx location匹配优先级_一分钟搞清楚:Nginx之Location优先级

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

  2. Nginx 的 Location 配置指令块

    最近一段时间在学习 Nginx ,以前一直对 Nginx 的 Location 配置很头大,最近终于弄出点眉目.总结如下: nginx 配置文件,自下到上分为三种层次分明的结构:  |    http ...

  3. Nginx配置location及rewrite规则

    Nginx配置location及rewrite规则 示例: location  = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location ...

  4. Nginx之location详解

    root location中root指定的只是相对路径,需要和路径结合起来映射地址,比如 location ^~/static/ { ## 这里的root需要和路径结合使用,即是映射的文件位置为 /u ...

  5. Nginx的location匹配与rewrite重写跳转

    目录 Nginx的location匹配与rewrite重写跳转 一.常用的Nginx正则表达式 二.location 分类 location常用的匹配规则 优先级 location示例说明 Rewri ...

  6. nginx的location和rewrite

    1 Nginx rewrite基本语法 Nginx的rewrite语法其实很简单.用到的指令无非是这几个 set if return break rewrite 麻雀虽小,可御可萝五脏俱全.只是简单的 ...

  7. Nginx之Location

    nginx Location 官网文档 语法 语法介绍 location [=|~|~*|^~|@] uri { ... } location @name { ... } 一个 location 关键 ...

  8. nginx的location

    前言 Nginx的location就相当于url路由,Nginx根据location的配置来决定究竟如何处理一个请求. Nginx通过将一个请求的url与location进行对比,来决定将该请求扔到哪 ...

  9. Nginx的location的规则及斜线的重要性

    目录 1.location规则 1.1.常用表达式示例 2.表达式优先级 3.location中斜线的位置的重要性 3.1.代理模式 3.2 本地资源模式 1.location规则 符号 含义 = = ...

  10. nginx之location匹配规则

    Nginx之location 匹配规则详解 有些童鞋的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是" ...

最新文章

  1. How Tomcat works — 四、tomcat启动(3)
  2. CPU的基本结构和功能
  3. java数据结构读书笔记--引论
  4. delphi 怎么获取工程版本号
  5. ThinkPHP+AJAX三级联动
  6. Spring Boot 学习笔记(三)Spring boot 中的SSM
  7. (转)Oracle中实现行列转换的方法
  8. 【文末福利】图论算法:稳定婚姻问题,如何找到最适合自己的另一半
  9. webstore安装过程 0913
  10. 在NVIDIA Jetson TX2上安装TensorFlow
  11. 熊顿 - 滚蛋吧!肿瘤君(2013年4月22日)
  12. 如何使用ES6模块export,export default和import
  13. python 字符串转字节_【转】python中的字符串和字节串
  14. 不写代码,把网站速度优化 10 倍~~
  15. 为基于GTK/CLUTTER的库增加GJS支持
  16. Mac将本地文件上传到服务器以及从服务器下载文件到本地
  17. 【ITool】mybatis-generator-annotation
  18. 磁盘列阵(RAID)
  19. 【REACT-受控组件和非受控组件】
  20. .max文件导入Unity出现异常

热门文章

  1. 《Android音视频开发》封面由你来投票
  2. java基础---Java---面试题---银行业务调度系统(线程同步锁、枚举、线程池)
  3. linux的tar命令压缩26g文件,如何使用Linux上的tar命令压缩和解压缩文件 | MOS86
  4. 数据算法_JS数据结构与算法_排序和搜索算法
  5. html打开本地excel文件夹,html使用excel表格数据库-html读取本地excel文件并展示
  6. 网络安全法对计算机人员的影响,网络安全法的基本原则-网络安全论文-计算机论文.docx...
  7. 安卓日记本设计内容介绍_天一 | 教你捷径,使用VB开发安卓程序!
  8. win7文件夹加密软件_神盾文件夹加密软件免费下载_电脑文件夹加密软件下载【文件管理】...
  9. 代发核心期刊骗局_警惕“代发论文”骗局,落入骗子圈套
  10. JQuery 添加元素appendf 后\prepend前,before 前\after 后,删除元素remove\empty