• Nginx location配置 正则表达式


    一、 location 的匹配符

    Syntax:


    location [ = | ~ | ~* | ^~ ] uri { ... }
    location @name { ... }
       
      1.  语法格式:location [=|~|~*|^~|@]   /uri/ { … } ,
           依据不同的前缀“= ”,“^~ ”,“~ ”,“~* ”和不带任何前缀的(因为[ ] 表示可选,可以不要的),表达不同的含义, 
          简单的说尽管location 的/uri/ 配置一样,但前缀不一样,表达的是不同的指令含义。
            注意:查询字符串不在URI范围内。例如:/films.htm?fid=123 的URI 是/films.htm 。)
     
    2.对这些不同前缀,分下类,就2 大类:
          正则location ,英文说法是location using regular expressions
          普通location ,英文说法是location using literal strings 。
          那么其中“~ ”和“~* ”前缀表示正则location ,“~ ”区分大小写,“~* ”不区分大小写;
          其他前缀(包括:“=”,“^~ ”和“@ ”)和   无任何前缀   都属于普通location 。
     
    详细说明:

    ~       区分大小写匹配

    ~*     不区分大小写匹配

    !~      区分大小写不匹配
            !~*    不区分大小写不匹配

    ^      以什么开头的匹配

    $      以什么结尾的匹配

    *      代表任意字符

         

         文件及目录匹配

    -f和!-f用来判断是否存在文件

    -d和!-d用来判断是否存在目录

    -e和!-e用来判断是否存在文件或目录

    -x和!-x用来判断文件是否可执行

     

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


    匹配规则是:最大前缀匹配(与顺序无关)
    如果恰好是严格精确匹配结果或者加有前缀“ ^~ ”或“ =     则停止搜索正则 location
    对于正则 location 的匹配规则是:按编辑顺序逐个匹配(与顺序有关)
    只要匹配上,就立即停止后面的搜索

     


    实例分析:

             location = / {  configuration A }

             # = 表示精确的查找地址,如location = /  它只会匹配uri为/的请求

             如果请求为/index.html,将查找另外的location,而不会匹配这个,
             当然可以写两个location,location = /和location /,这样/index.html将匹配到后者
             如果你的站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。

     

            location  / {  configuration B  }

              # 遵守普通location 的最大前缀匹配,由于任何URI 都必然以“/ ”根开头,所以对于一个URI ,如果有更specific 的           匹配,那自然是选这个更specific 的,如果没有,“/ ”一定能为这个URI 垫背(至少能匹配到“/ ”),也就是说“                     location / {} ”有点默认配置的味道,其他更specific的配置能覆盖overwrite 这个默认配置        
              (这也是为什么我们总能看到location / {} 这个配置的一个很重要的原因)

     


             location ^~ /images/ {  configuration C }

    # 匹配任何已/images/开头的查询并且停止搜索。任何正则表达式将不会被测试

    location ~* .(gif|jpg|jpeg)$ {   configuration  D }

    # 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求,但是 所有  /images/开头的请求 会匹配到  configuration C

     

           location  @named {  configuration  E } 
           #
    它是专门用来处理“内部重定向(internally redirected )

  • 相关阅读:
    轮播图适应代码jQ
    jQuery focus、blur事件 添加、删除类名
    节点操作js jQuery
    动态加载jQuery
    底边滑动变色的列表
    节点选择只有链接
    第三方登录过程—OAuth2.0协议
    JavaScript中常谈的对象
    浅谈JavaSccript函数与对象
    JavaScript与DOM的关系
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896777.html
Copyright © 2020-2023  润新知