千家信息网

如何在nginx中配置location匹配规则

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关如何在nginx中配置location匹配规则,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。location
千家信息网最后更新 2026年11月01日如何在nginx中配置location匹配规则

本篇文章给大家分享的是有关如何在nginx中配置location匹配规则,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

location 优先级官方文档

  • Directives with the = prefix that match the query exactly. If found, searching stops.

  • All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.

  • Regular expressions, in order of definition in the configuration file.

  • If #3 yielded a match, that result is used. Else the match from #2 is used.

=前缀的指令严格匹配这个查询。如果找到,停止搜索。

所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。

正则表达式,在配置文件中定义的顺序。

如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。

例如

location = / {  # 只匹配"/".  [ configuration A ]  } location / {  # 匹配任何请求,因为所有请求都是以"/"开始  # 但是更长字符匹配或者正则表达式匹配会优先匹配  [ configuration B ]  } location ^~ /images/ {  # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location  [ configuration C ]  } location ~* \.(gif|jpg|jpeg)$ {  # 匹配以 gif, jpg, or jpeg结尾的请求.   # 但是所有 /images/ 目录的请求将由 [Configuration C]处理.    [ configuration D ]  }

可以看到上面的例子中有5种不同类型的location,其中第4个带 "~" 号前缀的为需要正则匹配的location,nginx在进行url解析时对这5种不同类型的location具有不同的优先级规则,大致的规则如下:

1,字符串精确匹配到一个带 "=" 号前缀的location,则停止,且使用这个location的配置;

2,字符串匹配剩下的非正则和非特殊location,如果匹配到某个带 "^~" 前缀的location,则停止;

3,正则匹配,匹配顺序为location在配置文件中出现的顺序。如果匹配到某个正则location,则停止,并使用这个location的配置;否则,使用步骤2中得到的具有最大字符串匹配的location配置。

例如,对下面的请求有:

1, / -> 精确匹配到第1个location,匹配停止,使用configuration A

2,/some/other/url -> 首先前缀部分字符串匹配到了第2个location,然后进行正则匹配,显然没有匹配上,则使用第2个location的配置configurationB

3,/images /1.jpg -> 首先前缀部分字符串匹配到了第2个location,但是接着对第3个location也前缀匹配上了,而且这时已经是配置文件里面对这个url的最大字符串匹配了,并且location带有 "^~" 前缀,则不再进行正则匹配,最终使用configuration C

4,/some/other/path/to/1.jpg -> 首先前缀部分同样字符串匹配到了第2个location,然后进行正则匹配,这时正则匹配成功,则使用congifuration D

请求URI例子:

/ -> 符合configuration A/documents/document.html -> 符合configuration B/images/1.gif -> 符合configuration C/documents/1.jpg ->符合 configuration D@location 例子error_page 404 = @fetch;location @fetch(proxy_pass http://fetch;)

location匹配命令

  • ~ #波浪线表示执行一个正则匹配,区分大小写

  • ~* #表示执行一个正则匹配,不区分大小写

  • ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录

  • = #进行普通字符精确匹配

  • @ #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location 匹配的优先级(与location在配置文件中的顺序无关)

= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。

^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。

最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

以上就是如何在nginx中配置location匹配规则,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

正则 字符 配置 前缀 规则 字符串 表达式 精确 搜索 指令 文件 部分 顺序 不同 普通 优先级 例子 处理 最大 大小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 A股互联网金融科技公司 工业互联网科技新基建 高科技与互联网 奇酷互联网络科技 互联网金融和金融科技 科技伦理 互联网公司 富国互联网科技创新基金 互联网科技公司需要的职位 宁波青枫互联网科技有限公司 互联网数据科技专业 为客找房互联网科技公司怎么样 合肥互联网科技公司公章图片 怎样加入科技互联网 福州德业互联网科技 万物互联网智能科技 广州智享互联网科技 数字科技和互联网金融哪个好 互联网领先科技成果宣传视频 知域互联网科技有限公司官网 咖啡 互联网巨头科技公司 金融科技 互联网金融 银川新华互联网科技学校地址 互联网科技教育视频 洛阳昕诺飞互联网科技有限公司 互联网科技股为什么大涨 济南小医互联网科技有限公司招聘 承德科技产业互联网平台 东风日产互联网科技公司叫什么
0