location 指令是 http 模块当中最核心的一项配置,根据预先定义的 URL 匹配规则来接收和处理用户的请求。
location 匹配语法
精确匹配
location = /images/a.png {
...
}
前缀匹配
普通前缀匹配
location /images/blog/ {
...
}
优先前缀匹配
location ^~ /images/blog/ {
...
}
正则匹配
区分大小写
location ~ .*\.php {
...
}
不区分大小写
location ~* .*\.PHP {
...
}
location 匹配优先级
若命中精确匹配,如
location = /images/blog/php7.png {
...
}
则优先精确匹配,并终止匹配
若命中多个前缀匹配,如
location /images/ {
...
}
location /images/blog/ {
...
}
则暂存最长前缀匹配,并继续搜索正则匹配
若命中最长优先前缀匹配,如
location /images/ {
...
}
location ^~ /images/blog/ {
...
}
则命中最长优先前缀匹配,并终止匹配
若命中多个正则匹配,如
location /images/ {
...
}
location /images/blog/ {
...
}
location ~ /images/ {
...
}
location ~ /images/blog/ {
...
}
则按照配置文件的上下顺序匹配第一个正则,并终止匹配
若命中最长前缀匹配后没有搜索到正则,如
location /images/ {
...
}
location /images/blog/ {
...
}
则命中最长优先前缀匹配,并终止匹配