В настоящее время я переношу конфигурацию с 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. В этом случае вы можете использовать unset bereq.http.x-varnish;». но я не могу использовать bereq в vcl_miss / vcl_pass.
Есть ли у вас какие-либо идеи, как сохранить этот заголовок в vcl_backend_response, но без отправки его в бэкэнд?
В Varnish 3 я использовал его в vcl_miss/ vcl_pass и unset 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;
}
- В настоящее время: заголовок приложения в unset для бэкэнда и клиента (невозможно использовать его в vcl_backend_response)
- Цель: заголовок приложения можно использовать для условий в vcl_backend_response, но не отправлять его бэкэнду