我有以下指令:
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
指令属于这两类之一。发现哪些指令属于哪一类需要反复试验和大量搜索(有时还需要阅读代码)。