1 location 的匹配符

1.1 等于匹配符:=

等于匹配符就是等号,特点可以概括为两点:

  1. 精确匹配
  2. 不支持正则表达式

1.2 空匹配符

空匹配符的特点是:

  1. 匹配以指定模式开始的 URI
  2. 不支持正则表达式

1.3 正则匹配符:~

正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,一般来说~是指:

区分大小写的正则匹配

~*表示:

不区分大小写的正则匹配

但是对于一些对大小写不敏感的操作系统,这两者没有区别。另外一个就是^~,其表示以指定模式开始的正则匹配。

1.4 内部访问符:@

一般用于错误页面等,这个暂不讨论。

2 匹配符优先级

  1. =
  2. 空匹配符,满足精确匹配时
  3. ^~
  4. ~~*
  5. 空匹配符,满足以指定模式开始时的匹配时

这样说比较抽象,我们来看例子吧。

2.1 等于匹配符与精确匹配时的空匹配符

看下面的例子(用到我们此前一起完成的Hello World模块):

location /poechant {
hello_world no1;
} location = /poechant {
hello_world no2;
}

如果我们的请求是http://my.domian/poechant,则我们发现两个location都与请求的 URI 匹配,这时根据我们的优先级顺序,第一个是精确匹配时的空匹配符,第二个是等于匹配符,所以第二个的优先级高,也就是应该输出:

hello_world, no2

同时也说明 Nginx 的 locatoin 不是按照配置文件中的书写顺序来匹配的。

2.2 精确匹配时的空匹配符与正则匹配的^~

下面这个例子中,两者开始都精确匹配了,连这个正则匹配都是精确匹配。

location ^~ ^/poechant$ {
hello_world no1;
} location /poechant {
hello_world no2;
}

匹配哪一个?你测试一下,会得到:

hello_world, no2

与我们上面说的优先级顺序相吻合。

2.3 其他匹配优先级比较的实例

-

高性能Web服务器Nginx的配置与部署研究(16)小议location匹配模式优先级的更多相关文章

  1. 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

    通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...

  2. 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令

    1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...

  3. 高性能Web服务器Nginx的配置与部署研究(11)应用模块之Memcached模块的两大应用场景

    一.应用场景1 最近在一个项目中,用到了Nginx的Memcached模块,所以就在这个系列教程中提前把Memcached模块拿出来写了.另外发现最近我的 博客文章频频被很多用采集器的网站拿走,帮我发 ...

  4. 高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“Hello World”

    1. Nginx 程序包 目前最新的开发版本时1.1.12: Linux/Unix:nginx-1.1.12.tar.gz Windows:nginx-1.1.12.zip 我们可以下载稳定版尝试: ...

  5. 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例

    概述 从这篇博文起,将带领读者们一起领略Nginx的强大. Nginx 是做什么用的?我相信很多朋友都已经使用过,如果你没有,那么你一定知道以下这些名称之一:Apache,Lighttpd,Tomca ...

  6. 高性能Web服务器Nginx的配置与部署研究(3)Nginx请求处理机制

    1. 处理什么样的请求 处理访问到 Nginx 所在 IP 地址的请求,并且这些请求的 HTTP 头信息中的 Host 为所要处理的域名(如下以80端口为例),如下几个 server 就对应响应的请求 ...

  7. 高性能Web服务器Nginx的配置与部署研究(4)Nginx常用命令

    1. 启动 Nginx poechant@ubuntu:sudo ./sbin/nginx 2. 停止 Nginx poechant@ubuntu:sudo ./sbin/nginx -s stop ...

  8. 高性能Web服务器Nginx的配置与部署研究(8)核心模块之事件模块

    一.事件模块的作用是什么? 用来设置Nginx处理链接请求. 二.相关指令 1. accept_mutex 含义:设置是否使用连接互斥锁进行顺序的accept()系统调用. 语法:accept_mut ...

  9. 高性能Web服务器Nginx的配置与部署研究系列(1)-- 入门 hello work

    简介: Nginx 是一个基于 BSD-like 协议.开源.高性能.轻量级的HTTP服务器.反向代理服务器以及电子邮件(SMTP.POP3.IMAP)服务器.Nginx 是由一个俄罗斯的名叫“Igo ...

随机推荐

  1. Python——while、continue、break、while-else、or、and、not

    1. while 终止while循环: (1) 改变条件,使其不成立 (2) break 应用实例1:计算1+2+3+...+100 #1.使用两个变量 count = 1 sum = 0 while ...

  2. win7 + python2.7 安装scipy

    问题: 直接pip install scipy将不能正确安装,缺少文件 方法: 下载  "scipy‑0.19.0‑cp27‑cp27m‑win_amd64.whl"[90多M] ...

  3. java结构

    package com.hanqi;// 包名,必须在第一行,和namespace类似 //import java.io.*;//引用,和using类似 //import java.lang.*;// ...

  4. 阻塞队列之六:LinkedBlockingDeque

    一.LinkedBlockingDeque简介 java6增加了两种容器类型,Deque和BlockingDeque,它们分别对Queue和BlockingQueue进行了扩展. Deque是一个双端 ...

  5. ping正常但是ssh到linux服务器很卡的解决方法

    ssh登录很慢的问题  1.关闭ssh DNS反向解析 vi /etc/ssh/sshd_config 修改UseDNS no 2.关闭 GSSAPI 的用户认证   vi /etc/ssh/sshd ...

  6. sys模块的问题,深浅COPY的应用场景,元祖与购物车程序练习-打印彩色\033[31;1m--------\033[0m

    打印彩色:%s为变量,格式化 print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m&q ...

  7. bytes数据类型和字符串的编码解码,三元运算,进制互换

    三元运算 如果这个条件成立就存这个值,如果那个条件成立就存那个值. 进制 bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是p ...

  8. git 本地与远程分支冲突 解决

    git pull origin master git rebase origin/master git merge origin/master git rebase --continue git pu ...

  9. apache commons lang包中的StringUtils

    计算一个字符串某个字符的出现次数 a, 使用charAt方法截取之后,循环判断. b, 使用apache commons lang包中的StringUtils: int n = StringUtils ...

  10. sram的读和写

    sram的型号:ISSI IS61LV25616 -10TL 以上是数据手册上的. 对sram的认识:SRAM不需要刷新电路即能保存它内部存储的数据.而DRAM(Dynamic Random Acce ...