服务器信息如下
- 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.vcl
Varnish 容器中。
.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 的教程。