首页 > 解决方案 > 使用配置文件启动 Varnish

问题描述

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

该文件的内容取自《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。

标签: varnish

解决方案


我是Varnish Cache 入门的作者。谢谢你买我的书。

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

ExecStart命令_

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

/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:该标志仅在您在前台-F运行进程时才有意义。varnishd例如在 Docker 中。由于您使用systemd的是运行 Varnish,您可以删除该参数
  • -b:该-b选项用于定义您的后端位置。如果使用-b,则不能使用-f,并且需要-f进行 VCL 配置。

选项的含义

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

VCL 文件

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

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

vcl 4.0;

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

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

您可以通过连接到Varnish 有限状态机的不同进程状态来扩展 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

祝你好运!


推荐阅读