安装后漆通过sudo apt-get update && sudo apt-get install varnish
,然后:
sudo sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf
sudo sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/000-default.conf
sudo sed -i 's/DAEMON_OPTS="-a \:6081 \\/DAEMON_OPTS="-a \:80 \\/g' /etc/default/varnish
sudo systemctl restart apache2.service && sudo service varnish restart
如果我访问安装之前可以正常运行的网站,我会看到:
错误连接被拒绝。
这是因为 /etc/varnish/default.vcl 中的后端默认值是.port = "8080";
。
- 在 Bash 中执行任一
varnishncsa
或任一varnishlog
操作都不会产生输出。
我的问题:
为什么会发生这种情况?漆在端口 80 上,阿帕奇在 8080...还有什么可能出错?
笔记:
我还尝试将所有网站配置文件中的 80 改为 8080。除了没有效果之外,我已经意识到这是一个错误(网站是通过端口 80 访问的,因此与 000-default.conf 相比,它们的配置文件端口不应更改为 8080)。
答案1
ERR_CONNECTION_REFUSED
通常意味着端口被防火墙阻止,或者没有任何内容监听该端口。
如果您在 Ubuntu 15.04 或更高版本上运行,则切换到 会systemd
改变 Varnish 读取配置的方式。也就是说,它将忽略/etc/default/varnish
并改为读取 处的服务文件/etc/systemd/system/varnish.service
。因此,您的 Varnish 服务器可能在默认端口 6081 上运行。
要解决此问题,您需要覆盖systemd
配置。运行以下命令:
sudo mkdir -p /etc/systemd/system/varnish.service.d
sudo nano /etc/systemd/system/varnish.service.d/customexec.conf
这将为 Varnish 的服务创建一个自定义执行文件,其中包含您的自定义设置。在此文件中,请确保内容如下:
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
对您想要更改的配置进行任何更改,然后使用Ctrl+保存文件X。
systemd
通过运行以下命令重新加载服务缓存:
sudo systemctl daemon-reload
完成该命令后,重新启动 Varnish 服务:
sudo systemctl restart varnish.service
确保您的防火墙允许端口 80 通过,然后您就可以开始了。
与往常一样,此解决方案还假设 Apache 使用端口 8080 进行所有操作——应该有无约束到 Apache 配置中的任意位置的端口 80。仔细检查以确保情况确实如此。如果是,Apache 或 Varnish 之一将无法启动或工作。