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

Список хостов в Varnish

Я использую 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 ... не уверен, что лучше ...