vars
设置一个或多个变量为特定值,以便稍后在请求处理链中使用。
访问变量的主要方式是使用占位符,其形式为 {vars.variable_name}
,或者使用 vars
和 vars_regexp
请求匹配器。
您可以结合 templates
指令和 placeholder
函数来使用变量,例如:{{placeholder "http.vars.variable_name"}}
作为一种特殊情况,可以覆盖名为 http.auth.user.id
的变量(该变量存储在 replacer 中),以更新 访问日志 中的 user_id
字段。
语法
vars [<matcher>] [<name> <value>] {
<name> <value>
...
}
-
<name> 是要设置的变量名。
-
<value> 是变量的值。
如果可能,该值将被类型转换;
true
和false
将被转换为布尔类型,数值将被相应地转换为整数或浮点数。为了避免这种转换并将其保留为字符串,您可以将它们用 引号 括起来。
示例
要设置单个变量,其值基于请求路径进行条件判断,然后用该值进行响应
example.com {
vars /foo* isFoo "yep"
vars isFoo "nope"
respond {vars.isFoo}
}
要设置多个变量,每个变量都转换为适当的标量类型
vars {
# boolean
abc true
# integer
def 1
# float
ghi 2.3
# string
jkl "example"
}