编程教育资源分享平台

网站首页 > 后端开发 正文

Nginx配置文件中location的优先级答疑(2)

luoriw 2024-02-01 14:27:28 后端开发 11 ℃ 0 评论

上一篇中,我们讲了nginx配置文件中location的优先级及相关知识点。

不同类型的表达式区分如下:

  • 等号类型 ( = ) 的优先级最高。一旦匹配成功,则不再查找其他匹配项。
  • 然后是( ^~ )类型表达式。一旦匹配成功,则不再查找其他匹配项。
  • 正则表达式类型( ~ ~* )的优先级次之。如果有多个location的正则能匹配的话, 则优先使用正则表达式最长的那个。
  • 最后是常规字符串匹配类型,则按照前缀来匹配。
  • 当然也可以说最后是根 ( / ),因为根始终是最后匹配的。

现在接上一篇的内容,以案例来分析location优先级的问题:

  1. 下面2个配置同时存在时
location = / {
[ configuration A ]
}
location / {
[ configuration B ]
}

此时A生效,因为 =/ 优先级高于 /

2. 下面3个配置同时存在时

location /documents/ {
[ configuration C ]
}
location ~ /documents/ {
[configuration CB]
}
location ~ /documents/abc {
[ configuration CC ]
}

当访问的url为/documents/abc/1.html,此时CC生效,优先级顺序为CC > CB > C ,因为包含的优先级高于普通路径,而包含中的精确路径更高(前提是路径精确匹配)。

3. 下面两个配置同时存在时

location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}
location ~ /p_w_picpaths/abc/ {
[ configuration H ]
}

当访问的链接为/p_w_picpaths/abc/123.jpg时,E生效。因为上面的规则更加精确。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言