当nginx收到一个请求后,会截取请求的url部份,去搜索所有location指令中定义的URI匹配模式。在server模块中可以定义多个location指令来匹配不同的url请求,多个不同的location配置的URI匹配模式,总体的匹配原则是:
先匹配普通字符串模式,再匹配正则模式。
只识别URI部分,例如:
/test/abc/user.do?name=xxxx
一个请求过来后,nginx匹配这个请求的流程如下:
1:先查找是不有=开头的精确匹配,如:location = /test/abc/user.do {.....}
2 : 再查找普通匹配,以最大前缀为原则,如有以下两个location,则会匹配后一项
location /test/ {....}
location /test/abc {....}
3 : 匹配到一个普通格式后,搜索并未结束,而是暂存前匹配的结果,并继续搜索正则匹配模式
4 : 所有正则匹配模式location中找到“第一个“匹配项后,就以此项“最终匹配结果“
注意:所有正则匹配规则,受定义的前后顺序影响,但普通匹配模工不会!!!!
5:如果未找到匹配项,则以 3中缓存的结果为最终匹配结果
6:如果一个匹配都没搜到,则返回404