在 Apache2 服务器上安装 Varnish 后出现 ERR_CONNECTION_REFUSED

在 Apache2 服务器上安装 Varnish 后出现 ERR_CONNECTION_REFUSED

安装后通过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 之一将无法启动或工作。

(来源)

相关内容