当前,我将配置从Varnish 3迁移到Varnish 6。
但是我有一个问题,涉及将标头设置为后端,但将其保留在后端。
实际上,我无法在vcl_backend_response中使用它,因为它在(vcl_pass / vcl_backend_fetch)之前未设置...
在文档(https://book.varnish-software.com/4.0/chapters/VCL_Subroutines.html)中,我看到“如果您不希望将X-Varnish标头发送到后端服务器,则可以在vcl_miss或vcl_pass中将其删除。对于这种情况,您可以可以使用未设置的bereq.http.x-varnish;。”但是我不能在vcl_miss / vcl_pass中使用bereq。
您是否知道如何将此标头保留在vcl_backend_response中,但不将其发送到后端?
在Varnish 3中,我在vcl_miss / vcl_pass中使用了它,未设置的bereq在vcl_fetch中设置了。
最诚挚的问候,
vcl 4.1;
import std;
backend dev {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
set req.http.App="App1";
set req.backend_hint = dev;
return (hash);
}
sub vcl_miss {
unset req.http.App;
}
sub vcl_pass {
unset req.http.App;
}
sub vcl_backend_fetch {
unset bereq.http.App;
}
sub vcl_backend_response {
if (bereq.http.App) {
set beresp.http.Debug = "test";
set beresp.ttl = 10s;
set beresp.grace = 10s;
return (deliver); // not applied
}
}
sub vcl_deliver {
set res.http.App;
}