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 {
# 布尔值
abc true
# 整数
def 1
# 浮点数
ghi 2.3
# 字符串
jkl "example"
}