Varnish 如何记录所选控制器>;清漆中的后端

Varnish 如何记录所选控制器>;清漆中的后端,varnish,varnish-vcl,Varnish,Varnish Vcl,我有多个后端服务器,我使用一个控制器在它们之间进行“循环” 是否有方法以及(如果有)如何记录使用哪个后端(后端名称或后端主机名)? 上述内容涉及使用清漆NCSA的std.log(“key:value”)和%{VCL_log:*key*}x 我的vcl配置: backend aws_frontend1 { .host = "aws1.domain.mobi"; .port = "80"; } backend aws_frontend2 { .host = "aws2.domain.mo

我有多个后端服务器,我使用一个控制器在它们之间进行“循环”

是否有方法以及(如果有)如何记录使用哪个后端(后端名称或后端主机名)?
上述内容涉及使用清漆NCSA的
std.log(“key:value”)
%{VCL_log:*key*}x

我的vcl配置:

backend aws_frontend1 {
  .host = "aws1.domain.mobi";
  .port = "80";
}
backend aws_frontend2 {
  .host = "aws2.domain.mobi";
  .port = "80";
}

director lb_aws_frontend round-robin {
  {
    .backend = aws_frontend1;
  }
  {
    .backend = aws_frontend2;
  }
}

sub vcl_recv {
  set req.backend = lb_aws_frontend;
  unset req.http.Cookie;
}
sub vcl_fetch {
  if (beresp.http.cache-control ~ "(no-cache|private)" || beresp.http.pragma ~ "no-cache") {
    set beresp.ttl = 0s;
  } else {
    set beresp.ttl = 168h;
  }
}
sub vcl_error {
  if (obj.status == 750) {
    set obj.status = 403;
    return(deliver);
  }
}
编辑: 下面是更新的代码感谢尼特曼。。。 当命中未命中和“清漆缓存”时,此代码打印出后端名称:

import std;

backend aws_frontend1 {
  .host = "aws1.domain.mobi";
  .port = "80";
}
backend aws_frontend2 {
  .host = "aws2.domain.mobi";
  .port = "80";
}

director lb_aws_frontend round-robin {
  {
    .backend = aws_frontend1;
  }
  {
    .backend = aws_frontend2;
  }
}

sub vcl_recv {
  set req.backend = lb_aws_frontend;
  unset req.http.Cookie;
}
sub vcl_fetch {
  if (beresp.http.cache-control ~ "(no-cache|private)" || beresp.http.pragma ~ "no-cache") {
    set beresp.ttl = 0s;
  } else {
    set beresp.ttl = 168h;
  }
  std.log("backend_used:" + beresp.backend.name);
}
sub vcl_hit {
  std.log("backend_used:varnish cache");
}
sub vcl_error {
  if (obj.status == 750) {
    set obj.status = 403;
    return(deliver);
  }
}
后端名称(即使使用了控制器)在
vcl\u fetch
上可用,用于调试目的,我通常使用:

sub vcl_fetch {
  # ...
  set beresp.http.X-Backend = beresp.backend.name;
  # ...
}
后端名称(即使使用了控制器)在
vcl\u fetch
上可用,用于调试目的,我通常使用:

sub vcl_fetch {
  # ...
  set beresp.http.X-Backend = beresp.backend.name;
  # ...
}