04-Nginx配置之 location 配置
在进行反向代理配置中,我们需要配置 uri 匹配,在 location 中有几种不同的匹配模式,每一个匹配模式的优先级也不相同:
- “=”:用于不含正则表达式的 uri 前,与匹配的字符串需要严格一致才会匹配成功,如果匹配成功就不会向下匹配,优先级最高;
- “~”:用于匹配包含正则表达式的 uri 前,区分大小写;
- “~*”:用于匹配包含正则表达式的 uri 前,不区分大小写;
- “^~”:用于不含正则表达式的 uri 前,一旦匹配到就不再匹配正则 uri 前;
- “/”:默认匹配,只有所有的匹配都不满足才会执行此匹配;
优先级:“=” > “^~” > “~” = “^~” > “/”;
uri 配置用例
location = / { //精确匹配,优先级最高
# 只匹配 / 的查询.
[ configuration A ]
}
location / { //普通匹配,优先级低
# 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。
[ configuration B ]
}
location ^~ /images/ { //反正则,优先于正则匹配
# 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ { // ~*正则匹配,不区分大小写,优先级高于普通匹配
# 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处
理。
[ configuration D ]
}
各请求的处理如下例:
http://192.168.140.110:9000/: 会匹配 A、B 但 A 的优先级高,会执行 A 的配置;
http://192.168.140.110:9000/documents/document.html: 只会匹配 B;
http://192.168.140.110:9000/images/1.gif: 会匹配到 B、C、D,但是 C 优先级高,会执行 C 配置;
http://192.168.140.110:9000/documents/1.jpg: 会匹配 B、D,执行 D 的配置;

浙公网安备 33010602011771号