location /foo 和 location ^~ /foo 有什么区别
What's the difference between location /foo and location ^~ /foo
我正在尝试理解位置指令中 ^~
修饰符的含义。
文档说
If the longest matching prefix location has the “^~” modifier then
regular expressions are not checked.
但我几乎无法理解它。由于它是字符串前缀匹配,并且已经匹配,那么正则表达式在这里仍然相关吗?文档指的是什么正则表达式?
两者有什么区别
location /foo {}
location ^~ /foo {}
正则表达式参考:
- ~修饰符表示位置将被解释为区分大小写的正则表达式匹配。
- ~* 这意味着位置块将被解释为不区分大小写的正则表达式匹配。
例如,在以下配置中:
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 将在#1
中 return
- /foo2/bar/sample.txt 将 return in #3 因为最长的匹配前缀位置有 ^~修饰符
我正在尝试理解位置指令中 ^~
修饰符的含义。
文档说
If the longest matching prefix location has the “^~” modifier then regular expressions are not checked.
但我几乎无法理解它。由于它是字符串前缀匹配,并且已经匹配,那么正则表达式在这里仍然相关吗?文档指的是什么正则表达式?
两者有什么区别
location /foo {}
location ^~ /foo {}
正则表达式参考:
- ~修饰符表示位置将被解释为区分大小写的正则表达式匹配。
- ~* 这意味着位置块将被解释为不区分大小写的正则表达式匹配。
例如,在以下配置中:
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 将在#1 中 return
- /foo2/bar/sample.txt 将 return in #3 因为最长的匹配前缀位置有 ^~修饰符