location 匹配只匹配地址部分,而不匹配参数部分
= 开头表示精确匹配,不是正则匹配,匹配成功后 不会继续 往下匹配,直接采用该段
^~ 开头表示uri以某个常规字符串开头,不是正则匹配,匹配成功后 不会继续 往下匹配,直接采用该段
/abc 配置以字符串abc开头的地址,不是正则匹配,匹配成功后 继续 往下匹配,没有其他匹配项了才会采用该段,如:/abc/edf
/ 通用匹配, 因为所有请求都是以/开头,所以如果没有其它匹配,任何请求都会匹配到,不是正则匹配,匹配成功后 继续 往下匹配,没有其他匹配项了才会采用该段
~ 开头表示区分大小写的正则匹配,匹配成功后 继续 往下匹配,没有其他匹配项了才会采用该段
~* 开头表示不区分大小写的正则匹配,匹配成功后 继续 往下匹配,没有其他匹配项了才会采用该段
匹配顺序,nginx会把所有location配置取出,然后按以下顺序做匹配,其中正则匹配又会按所有正则 location 顺序匹配:
(location =) -> (location /abc) -> (location ^~) -> (location ~,~* )
注意:因为 = 和 ^~ 匹配一但成功就 不会继续 往下匹配,/abc 和 ~,~*都会继续往下匹配,所以我们最好是把 = 和 ^~ 匹配写到前面,/abc 和 ~,~* 写到后面,以便和nginx执行顺序一致,也好理解
原文:https://www.cnblogs.com/lbnnbs/p/11962521.html