错误 503 后端获取失败 Varnish Docker

错误 503 后端获取失败 Varnish Docker

服务器信息如下

  • Plesk 控制面板
  • CentOS 7 操作系统
  • Nginx 代理在端口 80 上运行
  • Apache 在端口 7080 上运行
  • Magento 网站
  • 弹性搜索
  • Redis 缓存
  • CSF 防火墙

我通过 Docker 安装了 varnish,配置如下。 点击这里

在此处输入图片描述

每当我添加 Docker 代理规则时,网站就会出现以下错误:

Error 503 Backend fetch failed
Backend fetch failed

Guru Meditation:
XID: 65824

Varnish cache server

答案1

Varnish 使用/etc/varnish/default.vcl作为其 VCL 配置的位置。在此配置中,您将找到后端定义以及一组缓存策略。

默认后端具有以下配置:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

此配置假定后端在端口上本地运行8080

在 Docker 环境中,这并不现实,因为每个服务都在自己的容器中运行。这就是您需要修改 VCL 文件的原因。

最好的办法是利用体积映射,这也是您附加的屏幕截图的一部分。

确保主机系统上有一个 VCL 文件并将其挂载到/etc/varnish/default.vclVarnish 容器中。

.host和属性.port应该引用您尝试代理的系统。

这将允许 Varnish 连接到正确的系统并缓存 HTTP 响应。

如果调整后仍然出现相同的错误,请看以下教程:https://www.varnish-software.com/developers/tutorials/troubleshooting-varnish/#backend-errors。这将帮助您使用varnishlog命令调试后端错误。

附注:即使您可以正确连接到后端,也不能保证 Varnish 会缓存 HTTP 响应。Varnish 具有内置的 VCL 行为,可描述哪些内容可以缓存,哪些内容不能缓存。请参阅https://www.varnish-software.com/developers/tutorials/varnish-builtin-vcl/有关内置 VCL 的教程。

相关内容