文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

规则:

nginx
location [ = | ~ | ~* | ^~] url { ... }

location @name { ... }

修饰符:

  • =: 一模一样的等于
  • ~: 区分 url 大小写
  • ~*: 不区分 url 大小写
  • ^~: 标志 location 后面的 url 不是正则表达式。如果 url 是正则的形式,则会以字符串的形式匹配。

如,无修饰符,默认匹配最长前缀。

示例:

nginx
location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}
路径配置
/A
/index.htmlB
/documents/document.htmlC
/images/1.gifD
/documents/1.jpgE

问:为什么 /documents/1.jpg 匹配到的是 E 二不是 C ?

答:因为 E 中 url 表达式比 C 中长。