升级到Varnish 5.0¶
对VCL的更改¶
现在应该在使用之前定义所有VCL对象
特别是,这是现在的ACL所必需的。定义前正在使用的ACL的错误消息令人困惑-请参阅PR#2021::
Name <acl> is a reserved name
VCL名称仅限于字母数字字符、破折号(-)和下划线 (_) 。此外,第一个字符应为字母。也就是说,名称应该匹配“ [A-Za-z] [A-Za-z0-9_-] *“。
与字符串一样,后端和整数现在可以用作IF语句中的布尔表达式。看见
vcl(7)了解更多细节。添加支持以在赋值中执行匹配,获得布尔值作为结果::
set req.http.foo = req.http.bar ~ "bar";
函数和方法调用的返回值可能会被丢弃。
后端¶
通过以下方式添加了对代理协议的支持
.proxy_header属性。可能的值为1和2,分别对应于代理协议版本1和2。
vcl_recv¶
增列
return (vcl(label))切换到标记为VCL的 label 。这个
rollback功能已停用。
vcl_hit¶
替换
return (fetch)使用return (miss)。
vcl_backend_*¶
添加了对的读取访问权限
remote.ip,client.ip,local.ip和server.ip。
vcl_backend_fetch¶
添加了对的写入访问
bereq.body、请求正文。仅限unset目前支持。我们现在默认发送请求正文(请参见 始终发送请求正文/“可缓存的帖子” )。要保留以前的行为,请在任何行为之前添加以下代码
return (..)此子例程中的语句::if (bereq.method == "GET") { unset bereq.body; }
vcl_backend_error¶
添加了对的写入访问
beresp.body,响应体。这可能会取代synthetic()在未来的版本中。
vcl_deliver¶
添加了对的读取访问权限
obj.ttl,obj.age,obj.grace和obj.keep。
vcl_synth¶
添加了对的写入访问
resp.body,响应体。这可能会取代synthetic()在未来的版本中。
管理界面¶
要禁用CLI身份验证,请使用
-S none。n_waitinglist已删除统计信息。
对参数的更改¶
增列
ban_lurker_holdoff。已删除
session_max。此参数实际上从4.0起不起作用,但可能会在将来的版本中重新出现。vcl_path现在是冒号分隔的目录列表,替换vcl_dir。vmod_path现在是冒号分隔的目录列表,替换vmod_dir。
其他变化¶
varnishstat(1)-f选项接受glob(7)图案。缓存-无法缓存的请求(即通道)的控制和Expires标头不会被解析。因此,不再记录TTL VSL标签的RFC变体。