loading...
Nginx文件匹配规则
Published in:2022-01-31 | category: Nginx
Words: 562 | Reading time: 2min | reading:

示例

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 {

}
  1. = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
  2. ~ : 用于表示 uri 包含正则表达式,并且区分大小写
  3. ~* : 用于表示 uri 包含正则表达式,并且不区分大小写
  4. ^~ : 用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location快中的正则uri和请求字符串做匹配。

注意:如果uri包含正则表达式,则必须要有~ 或者 ~* 标识。

Prev:
Nginx配置实例
Next:
Nginx安装、常用命令和配置文件
catalog
catalog