为了避免为每个子域设置一个备份,我为每个域名指定一个捕获所有正则表达式的字符串,如下所示:
backend domain1 {
.host = "10.10.10.5";
.port = "80";
}
backend domain2 {
.host = "10.10.10.6";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(.*\.)?domain1\.com$") {
set req.backend = domain1;
}
if (req.http.host ~ "^(.*\.)?domain2\.com$") {
set req.backend = domain2;
}
}
但是,当我尝试访问 domain2.com 时,Varnish 总是会显示第一个子域 (sub1.domain1.com) 上的网站。
domain1.com 下的所有子域名均按预期加载。
我是否遗漏了某些参数?
答案1
尝试这个配置:
backend domain1 {
.host = "10.10.10.5";
.port = "80";
}
backend domain2 {
.host = "10.10.10.6";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(.*\.)?domain1\.com$") {
set req.backend_hint = domain1;
}
if (req.http.host ~ "^(.*\.)?domain2\.com$") {
set req.backend_hint = domain2;
}
}