Nginx的路由功能实现由location来完成,根据location匹配的路径执行内部指令。
location对url的匹配语法:
location [=|~|~*|^~] /uri/ { … }
1、=:表示精准匹配
2、普通匹配
2.1 、~:区分大小写
2.2、~*:不区分大小写
2.3^~:非正则表达式匹配
3、\$:正则表达式
其中优先级为精准匹配>普通匹配>正则表达式。但是最终使用哪个路径不是简简单单的优先级就决定了。下面会根据实例慢慢分析。
1、标准匹配,如果都能匹配到,则nginx会选择最长匹配返回。而且精准匹配不会被其他普通匹配或者正则表达式覆盖。
location = /equal/a {
echo '/equal/a';
}
location = /equal/a/b {
echo '/equal/a/b';
}
location = /equal/a/b/c {
echo '/equal/a/b/c';
}
curl http://water.com/equal/a/b则会输出 /equal/a/b
curl http://water.com/equal/a/b/c则会输出 /equal/a/b/c
2、普通匹配,如果都能匹配到,则nginx会选择最长匹配返回。与精准匹配类似,但是普通匹配有可能被正则表达式覆盖。