man*_*tin 5 configuration environment-variables varnish varnish-vcl
我有2个环境变量:
echo $FRONT1_PORT_8080_TCP_ADDR # 172.17.1.80
echo $FRONT2_PORT_8081_TCP_ADDR # 172.17.1.77
Run Code Online (Sandbox Code Playgroud)
我想将它们注入我的default.vcl中,如:
backend front1 {
.host = $FRONT1_PORT_8080_TCP_ADDR;
}
Run Code Online (Sandbox Code Playgroud)
但是我在$char 上遇到了语法错误.
我也试过用户变量,但我无法在外面定义它们vcl_recv.
如何在VCL中检索我的2个值?
我设法解析了我的vcl
backend front1 {
.host = ${FRONT1_PORT_8080_TCP_ADDR};
}
Run Code Online (Sandbox Code Playgroud)
用脚本:
envs=`printenv`
for env in $envs
do
IFS== read name value <<< "$env"
sed -i "s|\${${name}}|${value}|g" /etc/varnish/default.vcl
done
Run Code Online (Sandbox Code Playgroud)
现在您可以使用VMOD Varnish标准模块(std)来获取VCL中的环境变量,例如:
set req.backend_hint = app.backend(std.getenv("VARNISH_BACKEND_HOSTNAME"));
Run Code Online (Sandbox Code Playgroud)
请参阅文档:https://varnish-cache.org/docs/trunk/reference/vmod_std.html#std-getenv
| 归档时间: |
|
| 查看次数: |
4371 次 |
| 最近记录: |