сбросить заголовок X-Varnish для внутреннего сервера, но оставить его в ответе клиенту - PullRequest
0 голосов
/ 06 ноября 2019

В настоящее время я переношу конфигурацию с 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, но не отправлять его бэкэнду
...