Nginx URI匹配规则

112 阅读1分钟

规则

规则一

无修饰语:完全匹配URI中除访问参数以外的内容,匹配项的内容只能是字符串,不能是正则表达式。

# 示例
location /images {
    root /data/web;
}

规则二

修饰语为 “=”:完全匹配URI中除访问参数以外的内容,Linux系统下会区分大小写,Windows系统下则不会。

# 示例
location = /images {
    root /data/web;
}

规则三

修饰语 “~”:完全匹配URI中除访问参数以外的内容,Linux系统下会区分大小写,Windows系统下则会无效。匹配项的内容必须是正则表达式。

# 示例

location ~ /images/.*\.(gif|jpg|png)$ {
    root /data/web;
}

规则四

修饰语 “~*”:完全匹配URI中除访问参数以外的内容,不区分大小写。匹配项的内容必须是正则表达式。

location ~* \.(gif|jpg|png)$ {
    root /data/web;
}

规则五

修饰语“^~”:完全匹配URI中除访问参数以外的内容,匹配项的内容如果不是正则表达式,则不再进行正则表达式测试。

location ^~ /images {
    root /data/web;
}

匹配顺序

  • 1)先检测匹配项的内容为非正则表达式修饰语的 location,然后再检测匹配项的内容为正则表达式修 饰语的location。
  • 2)匹配项的内容为正则与非正则都匹配的 location,按照匹配项的内容为正则匹配的location 执行。
  • 3)所有匹配项的内容均为非正则表达式的 location,按照匹配项的内容完全匹配的内容长短进 行匹配,即匹配内容多的location被执行。
  • 4)所有匹配项的内容均为正则表达式的 location,按照书写的先后顺序进行匹配,匹配后就 执行,不再做后续检测。