1.路徑配置的分類
在nginx中,一共有4種不同的路徑配置方法
= - Exact match
^~ - Preferential match
~ && ~* - Regex match
no modifier - Prefix match
#路徑完全一樣則匹配
location = path {
}
#路徑開頭一樣則匹配
location ^~ path{
}
#正則匹配,大小寫敏感
location ~ path{
}
#正則匹配,大小寫不敏感
location ~* path{
}
#前綴匹配
location path{
}
上面的執行順序是,優先查看Exact match
,若存在,則停止。如不存在,則進入Preferential match
。之后在進入Regex match
,先看大小寫敏感
的規則,再看大小寫不敏感
的規則.最后進入Prefix match
.
= --> ^~ --> ~ --> ~* --> no modifier
在每一個同類型的匹配規則
中,按照他們出現在配置文件中的先后,一一對比。
2.例子
location /match {
return 200 'Prefix match: will match everything that starting with /match';
}
location ~* /match[0-9] {
return 200 'Case insensitive regex match';
}
location ~ /MATCH[0-9] {
return 200 'Case sensitive regex match';
}
location ^~ /match0 {
return 200 'Preferential match';
}
location = /match {
return 200 'Exact match';
}
/match # => 'Exact match'
/match0 # => 'Preferential match'
/match1 # => 'Case insensitive regex match'
/MATCH1 # => 'Case sensitive regex match'
/match-abc # => 'Prefix match: matches everything that starting with /match'