2018-08-26T06:38:25Z||2018-08-26T06:38:25Z
Nginx location最大的难点就是,有些location是进去了就不会出来了,也就是按照顺序来匹配的。而有些location是即便匹配到了,还会继续往下走,如果下面有更好的匹配,则选择下面的,如果没有,这个location才会有效。
location /
匹配任何URL。不稳定,任何正则或者更长的URL的会优先匹配。location /abc
匹配以abc
开头的URL,和上面的location /
本质是一样的,不稳定,任何正则或者更长的URL的会优先匹配。location = /abc
只匹配/abc
这一个URL,稳定,一旦匹配,其他再走到其他location中。^~ /abc
这个不同于/abc
的是,他是稳定的,一旦匹配进来,立即停止搜索。~* abc
这个是正则表达式(regular expressions), 稳定的,一旦匹配,立即停止搜索。
还有就是稳定的location会按照顺序来,比如:
location ^~ /abc { }
location ~* abc { }
他们都是稳定的location,遇到/abc
这样的URL会进入第一个location。
还有不管是稳定还是不稳定的location,最终只会匹配一个location,这个过程复杂就在于这个location的匹配过程,但绝对不会出现匹配两个(或以上)location,然后把这些location内的配置结合在一起,不会这样的。