zoukankan      html  css  js  c++  java
  • nginx配置之location匹配规则

     一、 location uri匹配符介绍

    location = /uri
    精确匹配,优先级最高
    
    location ^~ /uri
    以某个uri前缀开头的匹配,不支持正则表达式
    
    location ~ /uri
    表示区分大小写的正则匹配
    !~表示区分大小写不匹配的正则
    
    location ~* /uri
    表示不区分大小的正则匹配
    !~*表示不区分大小写不匹配的正则
    
    location /uri
    普通匹配,没有匹配模式,只有URL
    
    location /
    通用匹配,匹配不到时,会进行通用匹配
    任何请求都会匹配

    二、 location匹配符优先级顺序

    首先匹配 "=" ,其次匹配 "^~" , 然后是按照配置文件中 "~""~*" 的顺序匹配 "~""~*" , 然后是进行普通匹配(/uri),如果最后匹配不到,则进行通用匹配("/")
    
    正则匹配与配置文件location的顺序有关,其他匹配则没有顺序
    正则匹配如果有多个匹配,则取最长匹配
    
    匹配优先级: 精确匹配(=)   >  前缀匹配(^~) >  正则匹配(~*|~) >  普通匹配 >  通配(/)

    三、示例

    location  = / {
      #精确匹配 ,匹配以后执行该location并停止匹配 
      [ configuration A ]
    
    }
    
    location  / {
      #所有都没有匹配到,则执行该location
      [ configuration B ]
    
     
    }
    
    location /documents/ {
      #当比它优先级高的没有匹配时,匹配任何以 /documents/ 开头的uri,此时才会被执行
      [ configuration C ]
    
    }
    
    
    location ^~ /images/ {
      #匹配任何以 /images/ 开头的uri,匹配符合以后执行该location并停止匹配
      [ configuration D ]
    
    }
    
    location /images/ {
      [ configuration E ]
    
    }
    
    location /images/abc {
      [ configuration F ]
    
    }
    
    location ~ /images/abc/ {
      [ configuration G ]
    
    }
    
    location ~* .(gif|jpg|jpeg)$ {
      #匹配所有以 gif,jpg或jpeg结尾的请求,但不包含以/images/开头的uri
      [ configuration H ]
    
    }
    
    请求localhost:80/则匹配到A
    请求localhots:80/index.html则匹配到B
    请求localhost:80/documents/document.html则匹配到C
    请求localhost:80/images/都会匹配到D,其中EFG在此配置中无任何意义,匹配到EFG的都会优先匹配D
    请求localhost:80/aaa/1.jpg则匹配到H
  • 相关阅读:
    iOS开发——C篇&数组与指针
    iOS开发——C篇&动态内存分配
    助教工作总结
    助教周报(第二轮)— 王茹瑶,林泽龙,范青青
    助教周报(第一轮)---王茹瑶
    UML总结--熊熊的奇幻旅程
    今天是一个睡前的小故事(是谁要给的大饼)
    我与oracle的爱恨情仇(第一章)
    第三次结对作业(王茹瑶+柯智腾)
    第二次结对作业(王茹瑶+柯智腾)
  • 原文地址:https://www.cnblogs.com/gudanaimei/p/13908998.html
Copyright © 2011-2022 走看看