请求URL案例分析:http://www.example.com/static/img/logo.jpg
该请求的URI部分:/static/img/logo.jpg
1. 如果「前缀字符串」定义的location与请求URI“精确匹配”成功,则终止匹配。
- location = /static/img/logo.jpg {
-
- }
2. 如果有多个「前缀字符串」匹配成功,则“记住”最长的前缀匹配,即本例中的 /static/img/,并继续检测「正则表达式」匹配。
- location /static/ {
-
- }
-
- location /static/img/ {
-
- }
3. 如果匹配成功的最长「前缀字符串」含有“^~
”修饰符,则终止匹配。
- location /static/ {
-
- }
-
- location ^~ /static/img/ {
-
- }
4. 如果有多个「正则表达式」匹配成功,则放弃上述 2 中的最长前缀匹配,使用第一个匹配成功的正则匹配,即本例中的 location ~* /static/ ,并终止匹配。
- location /static/ {
-
- }
-
- location /static/img/ {
-
- }
-
- location ~* /static/ {
-
- }
-
- location ~* /static/img/ {
-
- }
5. 如果没有「正则表达式」满足匹配,则采用 “步骤2” 中记住的最长前缀匹配, 即:本例中的location /static/img/ 。
- location /static/ {
-
- }
-
- location /static/img/ {
-
- }
-
- location ~* /video/ {
-
- }
6. 通配规则: location / 可以匹配任何请求,如果未匹配到其他的location,则执行本例中的location /。可以将通配规则理解为 swith case 语句里面的 default 分支。
- location / {
-
- }
-
- location /video/ {
-
- }