升级到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变体。