美文网首页
nginx里面location的匹配规则和顺序

nginx里面location的匹配规则和顺序

作者: CodingCode | 来源:发表于2020-07-21 05:28 被阅读0次

    nginx里面location的匹配规则和顺序

    1. 语法
    location [=|~|~*|^~] uri {
      ...
    }
    
    • <empty>:普通前缀匹配
    • = :精准匹配,uri必须完全一致
    • ~ :区分大小写的正则匹配
    • ~* :不区分大小写的正则匹配
    • ^~ :非正则前缀匹配
    1. 规则

    记住location分两类:

    • 普通location:包括:
      • 普通前缀匹配:'<empty>'
      • 精确匹配:'='
      • 非正则前缀匹配:'^~'
    • 正则location: 包括:
      • 区分大小写的正则匹配,'~'和
      • 不区分大小写的正则匹配,'~*'

    nginx按如下顺序操作:
    检查所有的普通匹配,包括普通前缀匹配,精确匹配,和非正则前缀匹配

    • 如果满足精确匹配,则直接使用精确匹配,停止。
    • 如果不满足精确匹配,找出最长的前缀匹配
      • 如果这条最长的前缀匹配是 非正则前缀匹配,那么使用这条最长的非正则前缀匹配,停止。
      • 如果这条最长的前缀匹配是 普通正则匹配,那么从前往后检查所有正则匹配
        • 如果存在任何一条正则匹配成功,那使用正则匹配,停止
        • 如果没有任何正则匹配成功,则使用前面那条最长的普通前缀匹配。

    所有有几点规则:

    1. 普通location的定义是顺序无关的。
    • 精确匹配 会优先处理。
    • 最长的普通匹配 会优先处理。
    1. 正则location的定义是顺序相关的。
    • 谁在前面,谁会优先处理。
    1. 几个常用例子
    location = / {
      ...
    }
    

    匹配到的uri是只有主机名,不含任何路径的请求。

    location / {
      ...
    }
    

    这条基本就是缺省的规则了,任何请求都会进入这个规则,如果没有被其它规则拦截。

    相关文章

      网友评论

          本文标题:nginx里面location的匹配规则和顺序

          本文链接:https://www.haomeiwen.com/subject/eihbkktx.html