varnish - 使用配置文件启动 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
你能帮我理解吗:
- 一个最简单的配置文件应该是什么样的。
- 它应该放在哪里。
- 如何使用此配置启动 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
祝你好运!
推荐阅读
- r - 尝试将“chr”列转换为数字会导致 R 中的列充满 NA
- javascript - 您的浏览器不支持直接访问剪贴板。请改用 Ctrl+X/C/V 键盘快捷键
- reactjs - 将每个数组索引渲染为 React 中的每个表
- javascript - 无法安装节点模块,因为“这与 npm 无法找到文件有关。”
- angularjs - ui-grid 表中键盘上下键的导航问题
- python - BeautifulSoup 在 Python 中提取没有类的值
- angular - 如何在 Angular 的 for 循环中触发点击事件
- reactjs - 将项目添加到数组后刷新页面
- python - 如何用 python 和漂亮的汤刮掉 CSS 图标
- karate - 从空手道的响应匹配中定义一个随机变量