04-Nginx配置之 location 配置

在进行反向代理配置中,我们需要配置 uri 匹配,在 location 中有几种不同的匹配模式,每一个匹配模式的优先级也不相同:

  1. “=”:用于不含正则表达式的 uri 前,与匹配的字符串需要严格一致才会匹配成功,如果匹配成功就不会向下匹配,优先级最高;
  2. “~”:用于匹配包含正则表达式的 uri 前,区分大小写;
  3. “~*”:用于匹配包含正则表达式的 uri 前,不区分大小写;
  4. “^~”:用于不含正则表达式的 uri 前,一旦匹配到就不再匹配正则 uri 前;
  5. “/”:默认匹配,只有所有的匹配都不满足才会执行此匹配;

优先级:“=” > “^~” > “~” = “^~” > “/”;


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 的配置;

posted @ 2022-05-03 09:29  ayi8  阅读(132)  评论(0)    收藏  举报