我正在设置一个连接到2个后端服务器(Magento 2个应用程序)的Varnish 5实例。
我使用的是新的Varnish 5特性,可以加载多个VCL文件。为了让事情变得非常简单,我将在我的示例中使用一个后端服务器。
因此,我有一个定义如下的magento.vcl:
vcl 4.0;
import std;
# The minimal Varnish version is 4.0
# For SSL offloading, pass the following header in your proxy server or load balancer: 'X-Forwarded-Proto: https'
backend default {
.host = "127.0.0.1";
.port = "8088";
}
include "/etc/varnish/common.vcl";和一个top.vcl
vcl 4.0;
import std;
backend default { .host = "127.0.0.1"; }
sub vcl_recv {
if (req.http.host == "magento2.dev") {
return (vcl(magento_vcl));
}
}然后我跑
service varnish restart
varnishadm
vcl.load magento /etc/varnish/conf.d/magento.vcl
vcl.label magento_vcl magento
vcl.load top /etc/varnish/top.vcl
vcl.use top
quit当我浏览到magento2.dev时,几秒钟后我得到一个后端获取错误。只有当我进入magento.vcl并更改后端的名称并发出后端提示时,它才能正常工作。如下所示:
vcl 4.0;
import std;
# The minimal Varnish version is 4.0
# For SSL offloading, pass the following header in your proxy server or load balancer: 'X-Forwarded-Proto: https'
backend magento {
.host = "127.0.0.1";
.port = "8088";
}
sub vcl_recv {
set req.backend_hint = magento;
}
include "/etc/varnish/common.vcl";为什么我要指定一个后端提示?Varnish不应该根据top.vcl中指定的主机加载不同的VCL吗?还是出了什么问题?
提前谢谢你,
发布于 2017-08-19 19:34:25
似乎varnish确实加载了您通过vcl (标签)指定的vcl。该.vcl应该指定对.vcl所针对的特定后端有效的backend_hint。我不认为有什么问题。
https://stackoverflow.com/questions/43845185
复制相似问题