在 Plesk 服务器上为 Magento 2 安装 Varnish Cache

Installing Varnish Cache for Magento 2 on Plesk Server

我们安装了 magento 2.4,我们有兴趣为我们的网站安装清漆缓存

我们正在使用 Plesk (Plesk Obsidian 18.0.37),所以我们发现遵循 this guide:

但是使用 magento 的 varnish v6 导出 .vcl 配置,这些语句不同

我们选择的 varnish 版本是 6.4.0-1

...

backend default {
    .host = <plesk's and site's ip>
    .port = "7080";

    ...

}

acl purge {
    "localhost";
    "<plesks's and site's ip>;
}

...

安装看起来成功,但每次我们尝试连接我们的演示子域时都会收到此错误

Error 503 Backend fetch failed

我们尝试用 localhost 替换后端默认的 ip 以及 plesk 面板中的各种不同配置,但似乎没有任何改变

使用 varnishlog -g raw -i backend_health

挖掘 varnish 的日志

此错误不断弹出:

0 Backend_health - default Still sick -------- 0 5 10 0.000000 0.000000 "Open error 110 (Connection timed out)"

...将本地主机用作 .host 此错误不断弹出:

0 Backend_health - default Still sick -------- 4 5 10 0.000000 0.000000 "Open error 101 (Network is unreachable)"

.. 最后使用 127.0.0.1 作为 .host 而不是 localhost:

acl purge {
    "localhost";
    "127.0.0.1";
    "<plesks's and site's ip>;
}

并得到了这个:

0 Backend_health - default Still sick -------- 4 5 10 0.000000 0.000000 "Open error 111 (Connection refused)"

这没有多大意义

我们猜测这可能是防火墙问题,所以我们暂时尝试在 plesk 的防火墙内添加一条规则: 允许所有端口上来自 ,127.0.0.1 的传入

但所有三种配置都没有改变

所以这与防火墙问题有关吗?还是配置错误?

提前致谢!

明显是防火墙的问题!

使用 localhost127.0.0.1 进行 varnish 配置没有多大意义,因为从 docker 容器的虚拟环境的角度来看,没有安装监听端口 7080 的 apache 服务器,但是在主机上。

所以 docker 无法使用本地主机访问主机的 apache。

将 docker 清漆的来源列入白名单,(docker 的网络接口)来自防火墙解决了这个问题。

将 docker 的网络 IP 地址列入白名单后(包括位掩码符号 (/16) 用于 apache 侦听的端口 7080) ) plesk 的防火墙扩展一切正常!

网站现在使用 varnish 速度更快,如果您在 plesk 遇到与 docker 和 varnish 相同的问题,希望这能给您提示。