Я использую VPS с несколькими разными веб-сайтами и Varnish для кеширования. Однако некоторые веб-сайты не следует кэшировать. Вместо того, чтобы создавать индивидуальные правила для каждого сайта, я хотел бы сделать общий список «НЕ КЭШИТЬ», который связан с некоторыми правилами. Возможно?
Далее я набросал то, что хотел бы: список веб-сайтов (синтаксис ACL) в конфигурации VCL, которые не следует кэшировать.
list cache_blacklist {
"domain1.com";
"domain2.com";
}
sub vcl_recv {
if (req.http.host ~ cache_blacklist) {
return(pass);
}
}
sub vcl_fetch {
if (req.http.host ~ cache_blacklist) {
return(hit_for_pass);
}
}
Первое: вам не нужно устанавливать правило vcl_fetch, если условие зависит от запрос. Все будет обработано в vcl_recv.
Правила vcl_fetch нужны только тогда, когда условие зависит от сервера ответ.
HTTP-хост находится в запросе ... ваше правило vcl_fetch фактически бесполезно.
Теперь, когда вам не нужно дважды указывать «какие домены не должны кэшироваться», просто используйте одно условие в vcl_recv, например:
sub vcl_recv {
if (req.http.host == "domain1.com" ||
req.http.host == "domain2.com") {
return(pass);
}
}
Обратите внимание, что вы также можете использовать regexp ... не уверен, что лучше ...