匹配的优先级:越精确,优先级越高
符号 | 说明 | 优先级(从高到低) |
---|---|---|
= | 精确匹配 | 优先级最高 |
^~ | 精确前缀匹配 | 优先级仅次于= |
~ | 正则匹配(区分大小写) | 优先级次于^~ |
~* | 正则匹配(不区分大小写) | 优先级次于^~ |
/uri | 普通前缀匹配 | 优先级次于正则 |
/ | 通用匹配 | 优先级最低 |
精确匹配使用 = 表示,nginx进行路由匹配的时候,精确匹配具有最高的优先级,请求一旦精确匹配成功nginx会停止搜索其他到匹配项。
location = /uri {
}
精确前缀匹配的优先级仅次于精确匹配,nginx对一个请求精确前缀匹配成功后,停止继续搜索其他到匹配项。
location ^~ /uri {
}
精确和精确前缀匹配失败后,nginx会尝试进行正则匹配,正则匹配分为区分大小写和不区分大小写两种,分别用 ~ 和 ~* 表示;需要说明的是正则匹配之间没有优先级一说,而是按照在配置文件中出现的顺序进行匹配,一旦匹配上一个,就会停止向下继续搜索
# 区分大小写
location ~ /uri {
}
# 不区分大小写
location ~* /URI {
}
普通前缀匹配前面没有任何修饰符,直接在location后写需要匹配的uri,它的优先级次于正则匹配
location /uri {
}
通用匹配使用一个 / 表示,可以匹配所有请求,一般nginx配置文件最后都会有一个通用匹配规则,当其他匹配规则均失效时,请求会被路由给通用匹配规则处理;如果没有配置通用匹配,并且其他所有匹配规则均失效时,nginx会返回 404 错误。
location / {
}