ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

从零学nginx-location配置及匹配规则

2019-09-21 12:37:57  阅读:224  来源: 互联网

标签:顺序 匹配 零学 配置 nginx location resource1 resource2


1. 配置语法

1.1. =: 严格匹配,只有完全一样的才能匹配上,这里有一些要注意:

1. 严格匹配如果需要匹配一个文件的时候,需要将路径具体到这个文件,不能使用index进行拼接
2. 如果匹配的是一个文件夹,在最后最好要加一个/(浏览器会为你的url添加一个/,导致匹配不上),否则会404

1.2. 无修饰符: 最大前缀的匹配,和配置文件中的顺序无关,取匹配度最高的配置,例如:

location /a{
	resource1
}

location /a/b{
	resource2
}

当url为a/b/c的时候,访问的是resource2

1.3. ^~:进行前缀匹配,例如:

location ^~ /a/{
	resource
}

只要访问的url是/a开头即可访问当resource

1.4. ~:大小写敏感正则匹配,匹配优先级和配置中的顺序有关

1.5. ~*:大小写不敏感正则匹配,匹配优先级和配置中的顺序有关

1.6. @:接收其他location规则的重定向

2. 匹配优先级策略

  1. 使用=的严格匹配优先级最高,如果匹配上了,就直接返回,且和配置顺序无关
  2. 无符号匹配和使用^~的匹配效果是一样的,以最大前缀为优先,和配置顺序无关
  3. 无符号匹配和使用~的匹配的一个异常点是:如果使用~匹配上了,就不会尝试正则进行匹配覆盖结果,但是无符号匹配会:
location ^~ /a/{
	resource1
}
location ~ /a/{
	resource2
}

结果:/a -->resource1

location /a/{
	resource1
}
location ~ /a/{
	resource2
}

结果:/a -->resource2
4. 如果多个正则都满足,那根据配置的顺序来决定结果

举例:

location =/a/{
	resource1
}
location /a/b{
	resource2
}
location ^~ /a/b/c{
	resource3
}
location ~ /b{
	resource4
}
location /c/d{
	resource5
}
location /c/d/e{
	resource6
}

结果如下:

/a --> resource1
/a/b --> resource4
/a/b/c --> resource3
/c/d/e --> resource6

标签:顺序,匹配,零学,配置,nginx,location,resource1,resource2
来源: https://blog.csdn.net/mazhen1991/article/details/101103013

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有