【问题标题】:Start Varnish with a config file使用配置文件启动 Varnish
【发布时间】:2020-04-03 16:36:37
【问题描述】:

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


    【解决方案1】:

    我是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 的监听地址。在这种情况下,port 80 用于常规 HTTP,port 8443 用于使用 PROXY 协议的连接
    • -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
    

    祝你好运!

    【讨论】:

    • 亲爱的 Thijs Feryn,感谢您的回答。让我考虑一下这些信息。
    【解决方案2】:

    看这里: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

    【讨论】:

    • 书中既有配置文件又有VCL文件。你能告诉我是否已经没有配置文件了吗?
    • 我不知道任何清漆配置文件。 Varnishd 是通过选项配置的。然后你通常有一个带有逻辑的 VCL 文件(在 varnishd 上配置了“-f”)。如果您不需要任何逻辑,您可以在 varnishd 上使用 -b 来设置一个后端。您还有什么其他类型的配置?
    • Kristian Lyngstøl 也开始写一本从未完成的书,但您可能仍想看一看 - 共有五章:github.com/KristianLyng/varnishfoo
    • 亲爱的 Ronald,你能告诉我为什么 Varnish 是一种奇怪的技术吗?我的意思是官方教程是关于版本 4.1 而当前版本是 6.4。社区不活跃。你提到的那本书还没写完。有一种技术正在消亡的印象。你能告诉我是否有比 Varnish 更受欢迎的替代品吗?
    • 我认为 Varnish 很棒并且会一直选择使用它。为 Varnish 4.1 编写的内容应该仍然对 6.4 有效。它正在积极开发中,每半年发布一次。
    猜你喜欢
    • 2011-11-18
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2021-10-06
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多