使用配置文件启动 Varnish

Start Varnish with a config file

Ubuntu 18.04.4 LTS

varnishd -V
varnishd (varnish-6.4.0 revision 13f137934ec1cf14af66baf7896311115ee35598)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software AS

我学习 Varnish 的第一步,现在已经尘埃落定。

我已经在/etc/systemd/system/varnish.service

准备了一个配置文件

我正在尝试使用此配置启动 varnishd:

[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd

[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -b :8000 -T localh$
ExecReload=/usr/share/varnish/varnishreload
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true

[Install]
WantedBy=multi-user.target

文件内容取自"Getting started with Varnish Cache"一书,不过是4.1版本的。

文档:https://varnish-cache.org/docs/6.4/users-guide/run_security.html#cli-interface-authentication

好了,文件我准备好了。我输入命令:

varnishd -S /etc/systemd/system/varnish.service
Error: Neither -b nor -f given. (use -f '' to override)
(-? gives usage)

但是这个命令工作正常:

sudo varnishd -a localhost:6081 -b localhost:8000 

你能帮我理解一下吗:

  1. 最简单的配置文件应该是什么样的。
  2. 应该放在哪里。
  3. 如何使用此配置启动 Varnish。

看这里:https://varnish-cache.org/docs/6.4/users-guide/command-line.html

这里更详细:https://varnish-cache.org/docs/6.4/reference/varnishd.html

Varnish 配置可以放在这里:/etc/varnish/default.vcl

最简单的 VCL:

backend default {
        .host = "localhost:81";
}

如何编写VCL:https://varnish-cache.org/docs/6.4/users-guide/vcl.html

我是 Varnish Cache 入门 的作者。感谢您购买我的书。

varnish.service 文件是 systemd 文件。它与 Varnish 本身无关,但它是 Ubuntu 用来管理 Varnish 服务的东西。

ExecStart命令

这里我将如何在 varnish.service 中设置 ExecStart 命令:

/usr/sbin/varnishd -f /etc/varnish/default.vcl -a http=:80,HTTP -a proxy=:8443,PROXY -s malloc,1G -S /etc/varnish/secret -T localhost:6082

您在此命令中看不到的内容:

  • -F:只有在前台 运行 运行 varnishd 进程时,-F 标志才有意义。例如在 Docker 中。由于您正在使用 systemd 到 运行 Varnish,您可以删除该参数
  • -b-b 选项用于定义后端位置。如果您使用 -b,则不能使用 -f,您的 VCL 配置需要 -f

选项的含义

  • -f:VCL文件所在位置。这里指的是/etc/varnish/default.vcl
  • -a:varnish的监听地址。在这种情况下,端口 80 用于常规 HTTP,端口 8443 用于使用 PROXY 协议[= 的连接93=]
  • -s:缓存的大小,本例为1GB
  • -S:秘钥文件所在位置。在这种情况下,这是 /etc/varnish/secret
  • -TCLI的监听地址。在这种情况下,这是 端口 6082
  • 上的 localhost

VCL 文件

包含后端位置并定义缓存规则的 VCL 文件。此文件位于 /etc/varnish/default.vcl.

这是开始的最小 VCL 代码量:

vcl 4.0;

backend default {
    .host = "localhost";
    .port = 8080;
} 

此配置假设您的网络服务器 运行 在同一台机器上 端口 8080

您可以通过连接到 the different process states of the Varnish Finite State Machine 来扩展 varnish 的配置。

请参阅 https://varnish-cache.org/docs/6.0/reference/vcl.html#varnish-configuration-language 了解有关 VCL 的更多信息。

激活更改

每当您更新 varnish.service 时,您都需要重新加载 systemd。这是您需要的命令:

sudo systemctl daemon-reload

要激活 VCL 文件中的更改,您需要运行以下命令:

sudo systemctl reload varnish.service

祝你好运!