location / foo和location ^〜/ foo之间的区别是什么

时间:2018-01-22 13:20:26

标签: nginx nginx-location

我试图理解位置指令中^~修饰符的含义。

文档说

  

如果最长的匹配前缀位置具有“^〜”修饰符   不检查正则表达式。

但我几乎无法绕过它。由于它是一个字符串前缀匹配,并且已经匹配,正则表达式在这里仍然如何相关?文档指的是哪些正则表达式?

之间的区别是什么
location /foo {}
location ^~ /foo {}

1 个答案:

答案 0 :(得分:1)

正则表达式引用:

  • 修饰符,表示该位置将被解释为区分大小写的正则表达式匹配。
  • 〜* 表示位置块将被解释为不区分大小写的正则表达式匹配。

例如,在以下配置中:

location ~* \.(txt)$ {
     return 200 "in #1/\n";
}
location /foo1    {
     return 200 "in #2/\n";
}
location ^~ /foo2 {
     return 200 "in #3/\n";
}

所以对于以下网址:

  • /foo1/bar/sample.txt 将返回 in#1
  • /foo2/bar/sample.txt 将在#3 中返回,因为最长的匹配前缀位置具有 ^〜修饰符