nginx 的配置文件中, server里面的location 的配置项的理解:

 server {
listen 24010; client_max_body_size 30M; location =/ { #范围 / 根目录的时候,这个普通的结构会被最后一步的结果覆盖。
index aa;
root /data/root;
try_files /m.html =502;
} location /bb/{
index a.html;
root /data/root;
}
location =/bb{
root /data/root;
try_files /index.html =404;
} location ~* \.html {
root /data/M4-Product/www/gitvidagrid/app/webroot/ysr;
}
}
#访问 /bb/a.html的时候,最后一个location优先级比倒数第二个优先级更高。

  

1. =xx 这个是精确匹配,当匹配到时, 会中断后续的匹配。

   =/  这个只匹配根目录, http请求中,ip后面不管加不加 / , 发出的http请求头, 都是带有 / 的。

2. / 这个可以匹配所有的uri,

3. /xx/  这个是普通的前缀匹配, (当多个前缀匹配满足时, 匹配的是更长的那个。 当既满足某个普通匹配,又满足正则匹配时,会匹配正则的)

4. ~ 和~* 这两个是正则匹配, (当多个正则匹配都满足时,匹配更长的这个正则匹配。)

5. ^~ 这个是使用前缀匹配,满足时,会中断匹配,不会匹配其它的正则匹配。

---------------------------------------------------------

参考:https://www.cnblogs.com/lidabo/p/4169396.html

To summarize, the order in which directives are checked is as follows:

  1. Directives with the “=” prefix that match the query exactly. If found, searching stops.
  2. All remaining directives with conventional strings. If this match used the “^~” prefix, searching stops.
  3. Regular expressions, in the order they are defined in the configuration file.
  4. If #3 yielded a match, that result is used. Otherwise, the match from #2 is used

----------------------------------------------------------------------------------------------------------------------

参考:https://www.cnblogs.com/shitoufengkuang/p/4919520.html

location表达式类型

~ 表示执行一个正则匹配,区分大小写

~* 表示执行一个正则匹配,不区分大小写

^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。

= 进行普通字符精确匹配。也就是完全匹配。

@ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location优先级说明

在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

以下是按优先级排列说明:

等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。

^~类型表达式。一旦匹配成功,则不再查找其他匹配项。

正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。

常规字符串匹配类型。按前缀匹配。

location优先级示例

配置项如下:

location = / {

# 仅仅匹配请求 /

[ configuration A ]

}

location / {

# 匹配所有以 / 开头的请求。

# 但是如果有更长的同类型的表达式,则选择更长的表达式。

# 如果有正则表达式可以匹配,则优先匹配正则表达式。

[ configuration B ]

}

location /documents/ {

# 匹配所有以 /documents/ 开头的请求。

# 但是如果有更长的同类型的表达式,则选择更长的表达式。

# 如果有正则表达式可以匹配,则优先匹配正则表达式。

[ configuration C ]

}

location ^~ /images/ {

# 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。

# 所以,即便有符合的正则表达式location,也不会被使用

[ configuration D ]

}

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

# 匹配所有以 gif jpg jpeg结尾的请求。

# 但是 以 /images/开头的请求,将使用 Configuration D

[ configuration E ]

}

请求匹配示例

/ -> configuration A

/index.html -> configuration B

/documents/document.html -> configuration C

/images/1.gif -> configuration D

/documents/1.jpg -> configuration E

注意,以上的匹配和在配置文件中定义的顺序无关。

nginx location 匹配的规则的更多相关文章

  1. nginx location匹配顺序及CI框架的nginx配置

    Nginx location匹配顺序如下: 用前缀字符串定义的location规则对URI进行匹配测试. =号定义了精确的前缀字符串匹配,如果发现精确匹配则使用当前规则.否则继续下一步匹配. 匹配其它 ...

  2. nginx location匹配规则

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

  3. 转:nginx location匹配规则

    location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配 ...

  4. Nginx location 匹配规则详解

    语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ^~ /uri ^~ ...

  5. [转载+整理]Nginx Location匹配规则

    目录 规则语法 location 分类 匹配顺序: 扩展 location / {}和 location =/ {}的区别 测试 规则语法 语法 匹配规则 空 普通匹配(遵循最大前缀匹配规则, 优先度 ...

  6. [整理] Nginx Location 匹配规则

    目录 规则语法 location 分类 匹配顺序: 扩展 location / {}和 location =/ {}的区别 如何快速测试 规则语法 语法 匹配规则 空 普通匹配(遵循最大前缀匹配规则, ...

  7. 【转】nginx location匹配规则

    转载请保留:http://www.nginx.cn/115.html location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^ ...

  8. nginx location匹配及rewrite规则

    location匹配规则 1. 实例 server{ location = \ { [配置A] } location / { [配置B] } location = /images/ { [配置C] } ...

  9. Nginx location 匹配顺序整理

    Nginx location模块整理 具体的Nginx安装就不在这里描述了,这里只是为了对location的描述 Nginx环境 a. 查看当前系统cat /etc/redhat-release [r ...

随机推荐

  1. QQ和微信一键加群加好友代码

    QQ和微信一键加群加好友链接代码实现. 1.QQ加群加好友链接(借助腾讯QQ群推广链接和加好友链接实现) (1).加群技术链接: http://qun.qq.com/join.html (2).加好友 ...

  2. 接口开发-基于SpringBoot创建基础框架

    说到接口开发,能想到的开发语言有很多种,像什么Java啊..NET啊.PHP啊.NodeJS啊,太多可以用.为什么选择Java,究其原因,最后只有一个解释,那就是“学Java的人多,人员招聘范围大,有 ...

  3. 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)(转)

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  4. 使用CefSharp在.Net程序中嵌入Chrome浏览器(六)——调试

    chrome强大的调试功能令许多开发者爱不释手,在使用cef的时候,我们也可以继承这强大的开发者工具. 集成调试: 我们可以使用如下函数直接使用集成在chrome里的开发者工具 _chrome.Sho ...

  5. CRC32 Source Code

    /* The Quest Operating System * Copyright (C) 2005-2010 Richard West, Boston University * * This pro ...

  6. RichEdit控件 SDK 参考手册

    RichEdit控件 SDK 参考手册 摘要: 本文对Rich Edit控件底层消息机制进行了讲解,以期读者对Windows平台下的Rich Edit控件有一个更深入的认识,同时对于使用Win32 S ...

  7. 使用Nginx过滤网络爬虫

    原文:https://www.liaoxuefeng.com/article/001509844125769eafbb65df0a04430a2d010a24a945bfa000 现在的网络爬虫越来越 ...

  8. cvCreateStumpClassifier

    CV_BOOST_IMPL CvClassifier* cvCreateStumpClassifier( CvMat* trainData, //训练样本的数据,包含图像大小.数量,类别,权重等 in ...

  9. Mac上 python 找不到 yaml模块

    (1)  yaml http://codyaray.com/2011/12/pyyaml-using-easy_install-on-mac-os-x-lion 1.报错 ImportError: N ...

  10. 西部世界第二季全集高清百度云在线观看BT种子迅雷下载

    原名:Westworld地区:美国语言:英语首播:2018-04-23 周一制作公司:HBO类型:科幻/惊悚/悬疑/西部别名:西方极乐园编剧:乔纳森·诺兰 / 丽莎·乔·诺兰导演:乔纳森·诺兰主演:埃 ...