CLI-对Varnish指手画脚

一次 varnishd 启动时,您可以使用 varnishadm 程序和命令行界面::

varnishadm help

如果你想参选 varnishadm 在远程系统中,我们建议您使用 ssh 进入系统,在那里 varnishd 跑了。(但另请参阅: Local and remote CLI connections )

您可以通过SSH进入 varnishd 计算机和运行 varnishadm **

ssh $hostname varnishadm help

如果不给出命令参数, varnishadm 以交互模式运行,具有命令补全、命令历史记录和其他舒适功能:

critter phk> ./varnishadm
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
FreeBSD,13.0-CURRENT,amd64,-jnone,-sdefault,-sdefault,-hcritbit
varnish-trunk revision 2bd5d2adfc407216ebaa653fae882d3c8d47f5e1

Type 'help' for command list.
Type 'quit' to close CLI session.
Type 'start' to launch worker process.

varnish>

CLI总是返回一个三位数的状态代码来说明事情的进展情况。

200和201表示 OK ,否则意味着某种故障阻止了该命令的执行。

(如果您得到201,则意味着输出被截断,请参见 cli_limit 参数。)

将命令作为参数提供给 varnishadm ,不同于200或201的状态将导致它以状态1退出,并在标准错误时打印状态代码。

您可以使用CLI执行什么操作

您可以从CLI执行以下操作:

  • 加载/使用/丢弃VCL程序

  • 禁止(使缓存内容无效)

  • 更改参数

  • 启动/停止工作进程

我们将在下面简要讨论其中的每一个。

加载、使用和丢弃VCL程序

所有缓存和策略决策都是由VCL程序做出的。

您可以加载多个VCL程序,但其中一个被指定为“活动的”VCL程序,这是所有新请求的起点。

要加载新的VCL程序::

varnish> vcl.load some_name some_filename

加载将从文件中读取VCL程序,并对其进行编译。如果编译失败,您将收到一条错误消息:

.../mask is not numeric.
('input' Line 4 Pos 17)
                "192.168.2.0/24x",
----------------#################-

Running VCC-compiler failed, exit 1
VCL compilation failed

如果编译成功,则加载VCL程序,现在您可以随时将其设置为活动的VCL:

varnish> vcl.use some_name

如果您发现这真的是一个糟糕的主意,您可以再次切换回以前的VCL程序::

varnish> vcl.use old_name

切换是即时的,所有新请求都将立即开始使用您激活的VCL。当前正在处理的请求使用它们开始时的任何VCL完成。

我们强烈建议您设计一个紧急VCL,并始终保持加载,以便可以使用以下命令激活:

vcl.use emergency

禁止缓存内容

Varnish提供了从缓存中删除内容的“清除”功能,但这需要您确切地了解它们是什么。

有时,能够在没有要丢弃内容的确切列表的情况下将其从缓存中抛出是很有用的。

例如,假设更改了公司徽标,现在您需要Varnish停止从缓存中提供旧徽标:

varnish> ban req.url ~ "logo.*[.]png"

应该这样做,是的,这是一个正则表达式。

我们称之为“禁止”,因为对象仍然在缓存中,但它们现在被禁止传递,而缓存的所有其余部分都不受影响。

即使你想把它扔掉 all 与重新启动相比,禁止缓存的内容速度更快,破坏性更小:

varnish> ban obj.http.date ~ .*

更改参数

可以在命令行上使用‘-p’参数设置参数,但几乎所有参数都可以从CLI动态检查和更改:

varnish> param.show prefer_ipv6
200
prefer_ipv6         off [bool]
                    Default is off
                    Prefer IPv6 address when connecting to backends
                    which have both IPv4 and IPv6 addresses.

varnish> param.set prefer_ipv6 true
200

通常,除非您有很好的理由,例如性能调优或安全配置,否则修改参数不是一个好主意。

大多数参数会立即生效,或稍有延迟,但有少数参数需要重启子进程才能生效。这在参数的描述中总是被提及。

启动和停止工作进程

通常,您应该让工作进程保持运行,但如果您需要停止和/或启动它,显而易见的命令会起作用:

varnish> stop

和::

varnish> start

如果你开始 varnishd 使用‘-d’(调试)参数,您将始终需要显式启动子进程。

如果子进程死亡,主进程将自动重新启动它,但您可以使用 auto_restart 参数。