varnish - 多个全能域名

varnish - 多个全能域名

为了避免为每个子域设置一个备份,我为每个域名指定一个捕获所有正则表达式的字符串,如下所示:

    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;
}

}

相关内容