我正在设置连接到2个后端服务器(Magento 2应用程序)的Varnish 5实例。
我正在使用加载多个VCL文件的新Varnish 5功能。为了使事情变得非常简单,我将在我的示例中使用1个后端服务器。
所以,我的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";
为什么要指定后端提示?不应该根据top.vcl中指定的主机加载不同的VCL吗?或者有什么不对吗?
提前致谢,
答案 0 :(得分:0)
似乎varnish确实加载了你通过vcl(label)指定的vcl。 .vcl应指定对.vcl所针对的特定后端有效的backend_hint。我认为没有任何错误。