Nginx路由匹配规则
说明
内容来源:同事的分享
语法
location [ = | ~ | * | ^ ] uri { ... }
前缀类型
字符串匹配
正则表达式匹配(
和*)
字符串前缀
=
空
^~
# 1) =
location = / {
oroot/home/www/myblog;
index index.html;
}
# 2)[空]
location /api {
oproxy_passhttp://45.77.1.11:8001;
}
# 3)^~
location ^~ /check {
oproxy_passhttp://45.77.1.11:8001;
}
正则表达式
~*不区分大小写
~区分大小写
# 1) ~*
location ~* /Api/ {
expire 30d;
proxy_pass http://45.71.9.2:8001;
}
# 2)~
location ~* /api/ {
expire 30d;
proxy_pass http://45.71.9.2:8001;
}
路由匹配顺序
文字描述
1)首先查找匹配字符串的location,nginx会遍历所有的字符串location,记录下匹配中的最长location。
-查找过程中如果遇到存在相等location(=),命中,查找终止。
-查找完毕,如果最长匹配带修饰符“^~”,命中,查找终止。
2)接着检查正则表达式,按照正则表达式出现的顺序逐个检查,匹配上则终止。没有匹配上则取前面匹配到的最长前缀项。
3) 优先匹配顺序说明
- =精确匹配
- ^~不匹配正则
- 正则匹配
- 字符串匹配