• nginx中的location匹配规则介绍


    简要概述

    location匹配的几个命令的说明,如下

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

    具体详情,请参加官方文档

    官方文档理解

    前缀匹配

    前面带有/或者/documents/的为前缀匹配。前缀匹配中,长的前缀匹配会优先于较短的前缀。比如,同时适合//documents/的前缀匹配,则优先使用/documents/
    具体事例,可以参加下面代码,规则2和规则3都是前缀匹配。

    正则匹配

    前面带有~*修饰符(不区分大小写)或~修饰符(区分大小写)的匹配为正则。nginx首先检查前缀匹配,记住匹配前缀的最长的匹配项。最后再按照在正则匹配出现的顺序搜索,在第一个适合的匹配项上终止,并使用相应的配置,不再对后面的正则匹配进行搜索了。
    如果没有匹配到合适的正则匹配项的话,则就会使用前面记住的前缀匹配。

    精确匹配

    使用=修饰符定义的匹配项为精确匹配。如果找到完全匹配的内容,搜索将终止,直接使用精确匹配出的匹配项,不再搜索后续的匹配项。
    例如,如果/请求频繁发生,则定义location = /将加快这些请求的处理速度,因为搜索将在第一次比较后立即终止

    实例展示

    官方给出了一个实例,这里展示,并做简要说明:

    # 规则1[精确匹配]
    location = / {
        # 将只会匹配到 "/",因为它是精确匹配。
    }
    # 规则2[前缀匹配]
    location / {
        # 将会匹配类似于"/index.html"这样的请求。
        # 同时,它也会匹配到其他规则匹配不到任何请求
    }
    # 规则3[前缀匹配]
    location /documents/ {
        # 将会匹配到类似于"/documents/document.html"这样的请求
        # 带有"/documents/"开头的路径,在规则1,规则4和规则5都匹配不到的情况下,都将会使用当前匹配。
    }
    # 规则4[正则匹配]
    location ^~ /images/ {
        # 将会匹配到类似于"/images/1.gif"的请求。
        # 任何带啊有"/images/"开头的请求都会被转发到这里,虽然规则5也能匹配到"/images/1.gif",但是由于当前规则写在规则5之前,当前规则已经匹配,所以就不再向下匹配了。
    }
    # 规则5[正则匹配]
    location ~* .(gif|jpg|jpeg)$ {
        # 将会匹配到类似于结尾为".jpg"的请求。
        # 虽然规则3也能匹配到"/documents/1.jpg",但是由于本规则是正则匹配,所以会覆盖掉规则3的匹配。这就是正则匹配覆盖掉前缀匹配的例子。
    }
    

    另外,推荐大家去参考Nginx location 正则这里对规则做了非常详细的说明。

    root 和alias指令区别

    • alias的实例
      location /img/ {
          alias /var/www/image/;
      }
      
      若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
    • root实例
      location /img/ {
          root /var/www/image;
      }
      
      若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。]

    alias是一个目录别名的定义,root则是最上层目录的定义。
    还有一个重要的区别是alias后面必须要用/结束,否则会找不到文件的,root则可有可无。

  • 相关阅读:
    纯快排
    Quick Sort(快速排序)
    归并排序 ALDS1_5_B:Merge Sort
    单调栈(POJ2559)
    Sequence
    Codeforces Round #503
    度度熊学队列
    Always Online hdu 6350
    Hills And Valleys
    Problem G. Depth-First Search
  • 原文地址:https://www.cnblogs.com/hxsen/p/12688558.html
Copyright © 2020-2023  润新知