美文网首页
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