nginx location优先级的深入讲解

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优先级的文章就介绍到这了,更多相关nginx location优先级内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx配置指令location匹配符优先级和安全问题

    最近一直在做location 配置,遇到优先级别问题(如果配置不当可能存在安全隐患哦),以下是个人学习一点体会. 一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配符:~正则匹配符是可以使用正则表达式的匹配符.不过这里要强调的是,一般来说~是指:区分大小写的正则匹配而~*表示:不区分大小写的正则匹配但是对于一些对大小写不敏感的操作系统,这两者没有区

  • Nginx配置之location的匹配优先级浅析

    前言 Nginx 配置中的 server 块中的 location 用来匹配请求 URI,以便对不通的 URI 进行不通的处理. location 类型 和 成功匹配的条件 location = expression {} 精准匹配,只有 URI 和 expression 完全相同,才算匹配成功: location expression {} 普通匹配,只要 URI 前部分的字符与 expression 相同就算匹配成功: location ^~ expression {} 普通匹配,只要 UR

  • nginx location优先级的深入讲解

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进行普通字符精确匹配.也就是完全匹配. @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在nginx的location和配置中location的顺序没有太大关系.正location表达式的类型有关.

  • nginx 配置location匹配规则实例讲解

    nginx的配置指令的作用域可以分为 main,server,location这3个种,实际上这3者不是依次包含的关系,而是相互独立的关系,比如一个只具有main级别作用域的指令,是不能写在某个server或者location内的,模块的某个指令可以同时具有main,server,location这3种作用域,另外每个模块有 main,srv,loc这3个级别的配置,一个模块的main级别的配置对所有的server和location都是共享的,srv级别的配置对所有 location都是共享的,

  • Nginx中Location配置超详细讲解

    目录 一.语法 二.匹配顺序 三.root 与 alias 的区别 四.server 和 location 中的 root 总结 一.语法 Location 是 Nginx 中一个非常核心的配置,关于Location,举个简单的配置例子: server { listen 80; server_name 10.0.7.115; location / { root /data/app/; index index.html; } } 当访问 http://10.0.7.115:80 的时候,返回的是

  • nginx实现动静分离实例讲解

    为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度.降低原 来单个服务器的压力. 简单来说,就是使用正则表达式匹配过滤,然后交个不同的服务器. 1.准备环境 准备一个nginx代理 两个http 分别处理动态和静态. 1.配置编译安装的nginx为反向代理upstream: upstream static { server 10.0.105.196:80 weight=1 max_fails=1 fail_timeout=60s; } upstream php {

  • nginx location中多个if里面proxy_pass的方法

    1.首先我们回顾一下nginx中location的相关知识 1)location的匹配指令: ~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,不是正则匹配.如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =      #进行普通字符精确匹配 @     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files 2)locat

  • 详解nginx location指令

    location 介绍 location是Nginx中的块级指令(block directive),,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理解的是多个location的匹配顺序,本文会作为重点来解释和说明. 开始之前先明确一些约定,我们输入的网址叫做请求URI,nginx用请求URI与location中配置的URI做匹配. Nginx的HTTP配置主要包括三个区块,结构如下: http { //这个是协议级别 include mime.t

  • 讨论nginx location 顺序问题

    目录 一.location 是什么 二.location 的选项有哪些? 三.location 的匹配规则 前缀字符串 正则表达式 总结 四.location 的应用规则 理论篇 实践篇 精准匹配优先级最高 正则匹配和顺序有关 正则.^~前缀匹配.空前缀匹配混搭 五.总结 网上有很多讨论 nginx location 顺序的话题,得到的结论也基本一致,总结为: 精准匹配 = 前缀匹配 ^~ 正则匹配 ~.~* 不带修饰符的前缀匹配 在很长的一段时间里,我对上述的结论也一直深信不疑,甚至还将这个结

  • nginx location语法使用介绍

    nginx location介绍 Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令.Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的"/uri/",可以是字符串或正则表达式.但如果要使用正则表达式,则必须指定前缀. nginx location语法 基本语法:location [=|~|~*|^~] /uri/ { - } = 严格匹配.如果这个查询匹配,那么将停止搜索并立即处理此请求. ~ 为区分大小写匹配(可用

  • nginx location匹配实例详解

    nginx location匹配实例详解 例1.nginx配置: 例2.nginx  配置: 例3.nginx配置: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • nginx location 配置 正则表达式实例详解

    1.location 介绍 •location 是在 server 块中配置,用来通过匹配接收的uri来实现分类处理不同的请求,如反向代理,取静态文件等 •location 在 server 块中可以有多个,且是有顺序的,会被第一个匹配的 location 处理 •localtion 匹配功能只做匹配分发用,并不会改变uri的内容或其他作用,我一开始理解的时候就混淆了一些概念,建议多做测试看实际效果 2.localtion 匹配规则 •location [ = | ~ | ~* | ^~ ] u

随机推荐