我似乎遇到了问题varnish
。虽然没什么大问题,但我很难找出问题所在。
基本上,varnish
设置为在端口上运行,6081
它确实如此;但是。我尝试编辑/etc/default/varnish
配置并将更改为daemon_opts
,80
甚至从文件中注释掉所有内容,但 varnish 似乎仍在上运行6081
。
因此,要么它不使用/etc/default/varnish
配置,而是从其他地方获取其设置,要么/etc/default/varnish
没有任何区别。
我的问题是,是否有人知道它可能使用哪个配置文件来获取其设置,或者我如何强制它使用配置?谢谢。
答案1
想出了一个修复方法,因为这是 varnish 的一个错误。本文的其余部分是本文的编辑版本:http://deshack.net/how-to-varnish-listen-port-80-systemd/
基本上,仅由 读取,而不是由初始化脚本( )/etc/default/varnish
读取。/etc/init.d/varnish script
systemd
/lib/systemd/system/varnish.service
我们可以覆盖systemd
varnish 的初始化脚本并进行一些改变。
# cp /lib/systemd/system/varnish.service /etc/systemd/system/
# nano /etc/systemd/system/varnish.service
我们得出了如下结论:
[Unit]
Description=Varnish HTTP accelerator
[Service]
Type=forking
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStartPre=/usr/sbin/varnishd -C -f /etc/varnish/default.vcl
ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
[Install]
WantedBy=multi-user.target
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
然后使用,
# sudo service varnish restart
或者
# systemctl reload varnish.service
答案2
确保使用了正确的 DAEMON_OPTS 行。默认 Varnish 配置有 4 个 DAEMON_OPTS 配置示例(替代方案 1,最小配置;替代方案 2,使用 VCL 进行配置;等等)。如果您取消注释其中几个,则只有最后一个取消注释的 DAEMON_OPTS 行会应用。
例子:
## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.
# Use a 256MB memory based cache.
#
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl.v4 \
-S /etc/varnish/secret \
-s malloc,256m"