
Я только что начал читать о Varnish и подумываю использовать его в качестве интерфейса для моих веб-серверов. У меня есть несколько доменов на моем веб-сервере, которые извлекают один и тот же контент при использовании одних и тех же строк запроса. Допустим, один клиент посещает:
http://domain1.com/script.php?string1=abc&string2=123
А позже заходит еще кто-то:
http://domain2.com/script.php?string1=abc&string2=123
Будет ли Varnish кэшировать результаты первого визита и использовать их для второго клиента? Спасибо!
РЕДАКТИРОВАТЬ:После некоторого дальнейшего чтения мне кажется, что следующее может сработать:
sub vcl_hash {
set req.hash += req.url;
return (hash);
}
Поэтому вместо добавления переменной http.host в хэш он игнорирует ее.
решение1
Вы можете настроить его так, в некотором роде. По умолчанию он этого не делает (и не должен).
У меня есть сайт с большим количеством имен хостов. Как мне не допустить увеличения кэша?
Вы можете сделать это, нормализовав заголовок "Host" для всех ваших имен хостов. Вот пример VCL:
if (req.http.host ~ "^(www.)?example.com") { set req.http.host = "example.com"; }
решение2
У меня на виртуальной машине 3 домена, я использую Nginx и Varnish, в настоящее время я нахожусь на предварительной конфигурации, вот что я делаю:
NGINX:80 ==> VARNISH:8080 ==> NGINX:8081
Я использую Nginx:80 как прокси, ЕСЛИ домену нужен Varnish, если нет, я использую FastCGI. В этом примере сайты без Varnish не касаются Varnish. Выглядит глупо, но работает ;-) и никто из моих клиентов не жалуется (пока...).