标签:区分 物理 就是 body 精确 header 最大 的区别 目录
目录
| 语法 | 匹配规则 |
|---|---|
| 空 | 普通匹配(遵循最大前缀匹配规则, 优先度比正则低) |
| = | 精确(严格)匹配 |
| ^~ | 非正则匹配(依然遵循最大前缀匹配规则) |
| ~ | 表示区分大小写的正则匹配 |
| ~* | 表示不区分大小写的正则匹配 |
| !~ 和 !~* | 别为区分大小写不匹配及不区分大小写不匹配 的正则 |
| / | 通用匹配,任何请求都会匹配到 |
只有两类:正则location和普通location
~ 和 ~* 为正则location
=、^~、@和无任何前缀的都属于普通location,另外,@是用作服务端内部的一种转发行为,很少用,在此不做讨论。
location /a/{},location /a/b/ {},请求 http://a/b/c.html 匹配的是 location /a/b/ {}综上,常规的顺序是匹配完普通location,还要继续匹配正则location,但是,也可以告诉nginx,匹配到了普通location,就不要再搜索匹配正则location了,通过在普通location前面加上^~符号,^表示非,~表示正则,^~就是表示不要继续匹配正则。
除了^~,=也可阻止nginx继续匹配正则,区别在于^~依然遵循最大前缀匹配规则,而=是严格匹配
location / {}和 location =/ {}的区别/ {}作为普通匹配,是遵循最大前缀匹配原则的,所以,对于一个url,如果有更特殊合适的匹配,就选特殊合适的,如果没有更特殊合适的匹配,也有 / {}兜着,就像是默认配置一样
=/ {} 遵循的是严格匹配规则,只能匹配到 http://ip:port/,同时会停止搜索正则匹配。
location ~* /a {
return 999;
}
直接reuturn 某个数字, 该数字会作为返回的http 状态码(自行F12打开开发者工具查看)
标签:区分 物理 就是 body 精确 header 最大 的区别 目录
原文地址:https://www.cnblogs.com/youjiaxing/p/10084357.html