Nginx 设置在嵌套位置指令中不起作用

Nginx 设置在嵌套位置指令中不起作用

我有以下指令:

location ~ "^/v1" {
  set $api_version 'v1';

  location ~ "^/v1/someEndpoint$" {
    # the rest goes here
  }
}

但是,$api_version当我点击时并未设置/v1/someEndpoint- 我必须set $api_version 'v1';在该内部/嵌套位置指令内。

这是为什么?为什么我无法set在顶层指令中为公共变量指定名称?

答案1

许多 nginx 指令不嵌套(proxy_pass),而其他指令只有在指令未在嵌套块内使用时才会嵌套(set_header)。我最好的猜测是该set指令属于这两类之一。发现哪些指令属于哪一类需要反复试验和大量搜索(有时还需要阅读代码)。

相关内容