varnish CLI管理
命令:varnishadm [-t timeout] [-S secret_file] [-T address:port] [-n name] [command [...]]
./varnishadm -T 127.0.0.1:2000
- -t timeout:等待一个操作完成的时间,单位秒
- -S secret_file:确定一个认证的安全文件
- -T address:port:连接到管理接口的地址和端口,在启动Varnish时指定的
- -n name:连接到管理接口的名字, 在启动Varnish时指定的
CLI主要能完成如下的功能:
- 配置:能上传、修改和删除VCL文件
- 参数:能查看和修改各种参数
- 清除缓存:可以清除Varnish中的缓存内容
- 进程管理:可以启动或者停止缓存子进程
CLI中常用的命令
backend.list:列出定义中的backend,包括它们的健康状态
vcl.load configname filename:创建一个新的配置,配置的名字是configname,内容是filename指定的文件内容
vcl.show configname:显示配置的具体内容
vcl.use configname:使用哪一个配置
vcl.list:列出可用的配置,以及参照使用他们的数量
ban field operator argument [&& field operator argument [...]]:使得匹配ban表达式的内容从缓存中清除。
- 一个ban表达式包含一到多个条件,一个条件由一个字段、一个操作符、一个参数构成,多个条件之间可以用“&&”来表示 and的关系
- 字段可以是任意的VCL变量,如:req.url, req.http.host or obj.http.set-cookie等
- 操作符有:==表示等、~匹配正则表达式、>、<、!等
- 参数可以是一个用双引号引起来的字符串,也可以是正则表达式、或者数字。数字后面开可以跟“KB”, “MB”, “GB” 或“TB”等。
- 示例如下:
清除请求url完全匹配“/news”的缓存内容: ban req.url == "/news“
清除请求url不能以.ogg结尾,同时这对象的大小不能大于10M 的缓存内容ban req.url !~ ".ogg$" && obj.size > 10MB
清除host为example.com或者www.example.com,同时从backend获得set-cookie头里面包含userid=1663 , 的缓存内容
ban req.http.host ~ "^(?i)(www\.)example.com$" && obj.http.set-cookie ~"USERID=1663
ban.list:内容ban列表。
- 如果缓存的内容比ban旧,那么这个缓存内容会被标示成banned,不能再使用这个
- 缓存内容,需要从backend获取内容。
- 如果ban的表达式比所有的缓存对象都旧的话,它将从ban的list里面去掉
- ban.list输出的格式如下:
0x7fea4fcb0580 1303835108.618863 131G req.http.host ~ www.myhost.com &&req.url ~ /some/url
第一个字段是ban的地址,第二个字段是时间戳,第三个字段表示有多少个对象
受此ban的影响(通常在debug时才有效),G表示这个ban已经Gone,也就不再有效了
后面的内容才是真正的ban的内容。
quit:退出CLI管理
help [command]:显示命令的帮助,不写命令就显示所有的命令