简介Nginx中的location匹配规则

location匹配命令

~      #波浪线表示执行一个正则匹配,区分大小写
~*    #表示执行一个正则匹配,不区分大小写
^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
=      #进行普通字符精确匹配
@     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location 匹配的优先级(与location在配置文件中的顺序无关)
= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。
普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。
最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

location 优先级官方文档

=前缀的指令严格匹配这个查询。如果找到,停止搜索。
    所有剩下的常规字符串,最长的匹配。如果这个匹配使用^?前缀,搜索停止。
    正则表达式,在配置文件中定义的顺序。
    如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。

例如

代码如下:

location  = / {
  # 只匹配"/".
  [ configuration A ]
}
location  / {
  # 匹配任何请求,因为所有请求都是以"/"开始
  # 但是更长字符匹配或者正则表达式匹配会优先匹配
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
  [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配以 gif, jpg, or jpeg结尾的请求.
  # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.  
  [ configuration D ]
}
 
location  = / {
  # 只匹配"/".
  [ configuration A ]
}
location  / {
  # 匹配任何请求,因为所有请求都是以"/"开始
  # 但是更长字符匹配或者正则表达式匹配会优先匹配
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
  [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配以 gif, jpg, or jpeg结尾的请求.
  # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.  
  [ configuration D ]
}

请求URI例子:

代码如下:

/ -> 符合configuration A
    /documents/document.html -> 符合configuration B
    /images/1.gif -> 符合configuration C
    /documents/1.jpg ->符合 configuration D

@location 例子
error_page 404 = @fetch;

location @fetch(
proxy_pass http://fetch;
)

(0)

相关推荐

  • 一些优化Nginx服务器的技巧简介

    大多数的Nginx安装指南告诉你如下基础知识--通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了.然而,如果你真的想挤压出nginx的性能,你必须更深入一些.在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能.需要注意一点,这不是一个全面的微调指南.这是一个简单的预览--那些可以通过微调来提高性能设置的概述.你的情况可能不同. 基本的 (优化过的)配置

  • Nginx简介_动力节点Java学院整理

    1.什么是Nginx Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx.Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色.稳定的服务. Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证.由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自

  • 简介使用Nginx Plus的在线活动监控功能的方法

    想了解你的 NGINX 服务器现在是什么情况? 是被 DoS 攻击, 还是网站出现一堆错误? NGINX Plus 现在推出一个时实活动监视接口,提供关键负载(key load )和性能监控. 通过简单的 RESTful JSON 接口,连接实时监控统计数据(stats to live dashboards) 和第三方监控工具,都变得轻轻松松. NGINX Plus 的 平衡负载状态时实监控 细节: 在线活动监控 – JSON feed 在NGINX Plus中启用该状态提示,只需简单地在服务器

  • 简介Nginx服务器的Websockets配置方法

    Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 "Nginx 支持 websockets 吗?" 成为了 freenode上的#nginx频道最常问的问题. 有了这种方式,让我们来看看Nginx的WebSocket实现. Nginx新添加的Websockets配置指令 文档中提到的配置如下:(译者注:原文中的链接其实不是文档的链接.现在nginx的官方

  • 基于Nginx的衍生版服务器Tengine简介

    Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验.它的最终目标是打造一个高效.稳定.安全.易用的Web平台. Nginx的特性: 1.基本的HTTP服务器特性 1.处理静态文件,索引文件以及自动索引:打开文件描述符缓存: 2.使用缓存加速反向代理:简单负载均衡以及容错: 3.远程FastCGI,uwsgi,SCGI,和memcached服务的缓

  • 简介Nginx中的location匹配规则

    location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =      #进行普通字符精确匹配 @     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files 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都是共享的,

  • JavaScript中正则表达式判断匹配规则及常用方法

    字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可以匹配一个空格(也包括Tab等空白符) \DWS都是表示匹配与

  • 详解Nginx location 匹配规则

    语法规则 location [=|~|~*|^~] /uri/ { - } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前. location ~ pattern 开头表示区分大小写的正则匹配 location ~* pattern 开头表示不区分大小写的正则匹配 location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后 location / 通用匹配

  • Nginx location匹配规则的方法示例

    1.语法 location [=|~|~*|^~|@] /uri/ { ... } 2.说明 从上面的语法出发,可以了解到 location 可以区分为三个部分,接下来一个一个的研究一下. 1) [=|~|~*|^~|@] = : 表示精确匹配后面的url ~ : 表示正则匹配,但是区分大小写 ~* : 正则匹配,不区分大小写 ^~ : 表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 @ : "@" 定义一个命名的 location,使用在内部定向时,

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

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

  • Android 中IntentFilter的匹配规则实例详解

    IntentFilter的匹配规则 IntentFilter的使用 假如我们要隐式启动一个Activity我们需要成功匹配activity中的任意一个intent-filter.如果要成功匹配该intent-filter我们需要完全匹配该intent-filter中的 action.category.data. 示例: <activity android:name=".MainActivity"> <intent-filter> <action andro

  • Nginx服务器的location指令匹配规则详解

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

  • Nginx中Location从零开始的配置教程

    基础知识 location的匹配顺序是"先匹配正则,在匹配普通". location的匹配顺序其实是"先匹配普通,在匹配正则".造成误解的原因是:正则匹配会覆盖普通匹配 Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] uri { ... } 2. location @name { ... } location 配置可以有两种配置方法 1.前缀 + uri(字符串/正则表达式) 2.@ + name 前缀含义 =

  • nginx中proxy_pass各种用法详解

    目录 代理转发规则 第一种: 第二种: 第三种: 第四种: 第五种: 代理转发规则 nginx中配置location代理转发规则的时候不同写法对应不同转发规则. 如果proxy_pass使用了URI,当传送请求到后端服务器时,规范化以后的请求路径与配置中的路径的匹配部分将被替换为指令中定义的URI(对应下文第一种情况). 如果proxy_pass没有使用URI,传送到后端服务器的请求URI一般客户端发起的原始URI(下文第二种情况). 访问地址:http://localhost/proxy/ab

随机推荐