Назад | Перейти на главную страницу

Varnish - Разрешить определенные файлы cookie для серверной части?

Я пытаюсь выяснить, как разрешить бэкэнду видеть файлы cookie отслеживания на определенных страницах регистрации, но игнорировать их на других. В настоящее время я пытаюсь использовать настраиваемый заголовок, отправляемый из серверной части в set beresp.ttl = 0s; внутри vcl_fetch:

if (beresp.http.cache-control ~ "max-age=-30") { set beresp.ttl = 0s; }

Но страницы регистрации по-прежнему не позволяют серверной части читать cookie.

в vcl_recv Я удаляю их таким методом:

set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|_ga|_mkto_trk)=[^;]*", "");

set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");

if (req.http.Cookie ~ "^\s*$") { unset req.http.Cookie; }

Как я могу позволить файлу cookie считываться на сервере на этих конкретных страницах? Я предполагаю, что мне нужно создать исключения в vcl_recv?

Да - нужно «вернуть (пропустить)»; по запросам в бэкэнде. vcl_fetch запускается только при «выборке» элемента из бэкэнда - если элемент уже хранится в кеше, varnish не будет запускать код выборки.