Varnish 6.6中的更改¶
有关将当前Varnish部署更新到新版本的信息,请参见 升级到Varnish 6.6 。
有关Varnish更改的更详细的技术说明,以及指向已修复的问题和已合并的拉入请求的链接,请参阅 change log 。
华而不实¶
立论¶
varnishd
现在支持-b none
参数只从内置VCL开始,而根本没有后端。
参数¶
这个
validate_headers
参数已添加到控件 header validation 。这个
ban_cutoff
参数现在指的是禁令列表的总长度,包括已完成的禁令,而在此之前,只有未完成(“有效”)的禁令被计入ban_cutoff
。这个
vary_notice
参数,以控制新的 Vary Notice 。
feature
旗子¶
这个
busy_stats_rate
添加了功能标记以确保统计信息更新(如使用thread_stats_rate
参数),即使在工作线程永远不会用完任务并且可能永远忙碌的情况下也是如此。
会计核算¶
正文字节计数已修复,始终表示在线路上移动的正文字节数,不包括特定于协议的开销,如HTTP/1分块编码或HTTP/2成帧。
此更改会影响计数器,如
MAIN.s_req_bodybytes
,MAIN.s_resp_bodybytes
,VBE.*.*.bereq_bodybytes
和VBE.*.*.beresp_bodybytes
以及VSL记录
ReqAcct
,PipeAcct
和BereqAcct
。
会话关闭原因¶
已修复连接关闭原因,以正确报告 SC_RESP_CLOSE
/ resp_close
其中以前仅限 SC_REQ_CLOSE
/ req_close
据报道。
对于失败的代理连接, SessClose
现在提供了有关故障原因的更详细信息。
改进了HTTP/2连接的会话关闭原因日志记录/统计信息。
更改通知¶
A日志(VSL) Notice
现在,只要超过 vary_notice
在高速缓存中遇到特定散列的变体。新的 vary_notice
参数默认为10。
对VCL的更改¶
标题验证¶
除非新的 validate_headers
功能已禁用,所有新设置的标头现在都经过验证,仅包含RFC7230允许的字符。如果没有,则触发(运行时)VCL故障。
VCL变量¶
这个
client.identity
变量现在可以在后端访问。变数
bereq.is_hitpass
和bereq.is_hitmiss
已添加到后端匹配req.is_hitpass
和req.is_hitmiss
在客户端。这个
bereq.xid
变量现在还可以在vcl_pipe {}
这个
resp.proto
变量现在是只读的,因为它应该保持很长时间,就像其他变量一样*.proto
变量。
VCL的其他更改¶
VCL中的长字符串现在也可以使用
""" ... """
除了现有的{" ... "}
。这个
ban()
内置现在已弃用,应替换为 std.ban() 。试图利用
std.rollback()
从…vcl_pipe
现在会导致VCL故障。模运算符
%
已添加到VCL。return(retry)
从…vcl_backend_error {}
现在可以正确地重置beresp.status
和beresp.reason
。内置的VCL已重新编写:VCL代码已被拆分成多个小的子例程,自定义VCL可以在这些子例程前面添加自定义代码。
这允许更好地集成自定义VCL和内置VCL并更好地重用。
VMODs¶
directors.shard()
¶
分片控制器现在支持多个实例的重新配置(添加/移除后端),而不需要任何特殊的排序要求。
给碎片主管打电话
.reconfigure()
方法现在是可选的。如果未显式调用,则在当前任务结束时应用任何碎片控制器后端更改。碎片导演
Error
使用以下选项记录消息(notice)
已经变成了Notice
记录消息。所有碎片
Error
和Notice
消息现在使用统一前缀vmod_directors: shard %s
。
std.set_ip_tos()
¶
这个 set_ip_tos()
函数从捆绑的 std
Vmod现在设置在IPv6连接上使用时的IPv6流量类(TCLASS)。
std.ban()
and std.ban_error()
¶
这个 std.ban()
和 std.ban_error()
函数已添加到 std
Vmod,允许VCL检查BAN错误。新界面的典型使用模式是:
if (std.ban(...)) {
return(synth(200, "Ban added"));
} else {
return(synth(400, std.ban_error()));
}
Varnishlog¶
看见 Accounting 用于更改与会计相关的VSL记录。
看见 Session Close Reasons 对于影响的变化
SessClose
。三个新的
Timestamp
已将VSL记录添加到后端请求处理:这个
Process
之后的时间戳return(deliver)
或return(pass(x))
从…vcl_backend_response
,这个
Fetch
请求后端连接之前的时间戳和这个
Connected
建立到常规后端(VBE)的连接或选择循环使用的连接时的时间戳。
这个
FetchError
日志消息Timed out reusing backend connection
已重命名为first byte timeout (reused connection)
以澄清其排放的原因实际上与first byte timeout
。ExpKill
日志(VSL)记录现在默认情况下被屏蔽。请参阅vsl_mask
参数。改进了VSL查询中的数字比较,以更好地匹配未详细阅读文档的用户可能期望的行为。
看见 Vary Notice 有关新添加的
Notice
记录(VSL)记录。
瓦尼西克萨¶
这个
%{X}T
格式已添加到varnishncsa
,这概括了%D
和%T
,但也支持毫秒级 (ms
)输出。这个
varnishncsa
-E
用于显示ESI请求的参数已更改为隐含-c
(客户端模式)。此行为现在由所有日志实用程序共享,并且-c
不再包括ESI请求。
瓦尼沙德姆¶
这个
vcl.discard
CLI命令现在可用于通过单个命令丢弃多个VCL,只有当所有给定的VCL都可以被丢弃时才会成功(原子行为)。这个
vcl.discard
CLI命令现在支持VCL名称的全局模式。这个
vcl.deps
已添加CLI命令以输出VCL之间的依赖关系(由于标签和return(vcl)
声明)。varnishadm
现在有了-p
选项以禁用读取行支持,以便在脚本中使用并用作通用CLI连接器。
Varnish状态¶
看见 Accounting 用于更改与会计相关的计数器。
看见 Session Close Reasons 对于影响的变化
MAIN.sc_*
柜台。这个
MAIN.esi_req
已添加计数器作为创建的ESI子请求数量的统计信息。这个
MAIN.s_bgfetch
已添加计数器作为发出的后台获取数的统计信息。
varnishstat
现在避免了以前可能下溢到负值的仪表的显示错误,显示为极高的正值。这个
-r
选项和r
添加了键绑定以返回到以前的行为。当中的原始模式处于活动状态时varnishstat
交互(诅咒)模式,单词RAW
显示在右手边的下方状态行中。
Varnish测试¶
已经做出了各种改进 varnishtest
设施:
这个
loop
关键字现在可以在任何地方使用改进了HTTP/2日志记录
已调整默认的HTTP/2参数
现在,默认情况下,VARNISH侦听地址信息在宏中可用
${vNAME_addr}
,${vNAME_port}
和${vNAME_sock}
。按名称命名的宏${vNAME_SOCKET_*}
方法创建的每个侦听套接字的地址信息。-a
参数为varnishd
。计数器的同步点(VSC)已添加为
varnish vNAME -expect PATTERN OP PATTERN
Varnishtest现在还可以与IPv6设置一起使用
feature ipv4
和feature ipv6
可用于控制需要其中一个协议的测试用例的执行。HaProxy参数现在可以通过
HAPROXY_ARGS
变量。LogExpect现在支持使用
expect ? ...
语法和否定匹配fail add ...
和fail clear
语法。整体的logExpect匹配预期现在可以使用
-err
争论。添加了对HTTP标头的数字比较:
-lt
,-le
,-eq
,-ne
,-ge
,-gt
rxdata -some
已经修好了。
对Varnish实用程序的其他更改¶
所有使用VUT库实用程序进行参数处理的Varnish工具现在都支持 --optstring
参数返回适合与一起使用的字符串 getopts
来自Shell脚本。