示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ 规则 A ] }
location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ 规则 B ] }
location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ 规则 C ] }
location ~ /documents/Abc { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ 规则 D ] }
location ^~ /images/ { # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。 [ 规则 E ] }
location ~* \.(gif|jpg|jpeg)$ { # 匹配所有以 gif,jpg或jpeg 结尾的请求 # 然而,所有请求 /images/ 下的图片会被 [规则 E] 处理,因为 ^~ 优先级更高 [ 规则 F ] }
location /images/ { # 字符匹配到 /images/,继续往下,会发现 ^~ 存在 [ 规则 G ] }
location /images/abc { # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在 [ 规则 H ] }
location ~ /images/abc/ { # 只有去掉 [规则 E] 才有效:先最长匹配 [规则 H] 开头的地址,继续往下搜索,匹配到这一条正则,采用 [ 规则 I ] }
|
location指令说明
该指令用于匹配URL。
语法如下:
1 2 3
| location [ = | ~ | ~* | ^~] uri {
}
|
- = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
- ~ : 用于表示 uri 包含正则表达式,并且区分大小写
- ~* : 用于表示 uri 包含正则表达式,并且不区分大小写
- ^~ : 用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location快中的正则uri和请求字符串做匹配。
注意:如果uri包含正则表达式,则必须要有~ 或者 ~* 标识。