set
'set' 指令在 NGINX 配置上下文中为变量赋值。 — NGINX HTTP Core
set
serverlocationif in serverif in location
语法set $variable value;
默认值none
上下文server, location, if in server, if in location
模块NGINX HTTP Core
参数2
说明
'set' 指令在 NGINX 中允许你创建或修改变量。该指令可以在多个上下文中使用,例如 'server'、'location' 以及这些上下文中的 'if' 语句。语法由两个参数组成:第一个是变量名(以 $ 符号开头),第二个是要赋给该变量的值。例如,使用 'set $my_var 'some_value';' 会创建一个名为 'my_var' 的变量,其值为 'some_value'。该值可以是字符串、其他变量的拼接,或由 NGINX 的变量和设置派生的值。 'set' 指令的行为确保在指定的上下文中任何地方都可以访问已定义的变量,包括嵌套的配置中。需要注意的是,一旦变量被设置,后续的 'set' 指令可以改变其值,但这些更改仅在声明它们的上下文中生效。可以在 http 上下文中定义全局变量,而本地变量则限定在 'location' 或 'server'。除此之外,由于缺乏持久化存储,在一次请求中对变量所做的任何修改都不会影响另一请求,从而确保了请求隔离。
配置示例
set $my_var 'hello world';
server {
listen 80;
location / {
set $my_var 'example';
return 200 "$my_var";
}
}⚠
在 'if' 上下文中设置的变量可能具有有限的作用域,并且在该上下文之外可能无法按预期工作。
⚠
在变量名中使用带有 '$' 符号的正确语法很重要;忘记使用会导致配置失败。
⚠
确保变量名不要与内部 NGINX 变量冲突,以避免出现意外行为。