【问题标题】:What's the difference between location /foo and location ^~ /foolocation /foo 和 location ^~ /foo 有什么区别
【发布时间】:2018-07-01 03:24:09
【问题描述】:

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

文档说

如果最长匹配前缀位置有“^~”修饰符,那么 不检查正则表达式。

但我几乎无法理解它。由于它是字符串前缀匹配,并且已经匹配,那么正则表达式在这里仍然相关吗?文档指的是什么正则表达式?

两者有什么区别

location /foo {}
location ^~ /foo {}

【问题讨论】:

    标签: nginx nginx-location


    【解决方案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 将返回 #1
    • /foo2/bar/sample.txt 将返回 in #3,因为最长匹配前缀位置具有 ^~ 修饰符

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 2015-03-08
      • 2017-06-23
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2011-07-26
      相关资源
      最近更新 更多