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

Как кеш Varnish обрабатывает разные домены?

Я только начал читать о 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 в хеш он ее игнорирует.

Вы можете настроить его так, как бы. По умолчанию это не так (и не должно).

Из Лак FAQ / HowDoI

У меня есть сайт с множеством имен хостов, как мне уберечь их от увеличения кеша?

Вы можете сделать это, нормализовав заголовок «Host» для всех ваших имен хостов. Вот пример VCL:

if (req.http.host ~ "^(www.)?example.com") { set req.http.host = "example.com"; }

У меня есть 3 домена на моей виртуальной машине, я использую Nginx и Varnish, в настоящее время я использую предварительную конфигурацию, вот что я делаю:

NGINX:80 ==> VARNISH:8080 ==> NGINX:8081

Я использую Nginx: 80 как прокси, ЕСЛИ домену нужен Varnish, в противном случае я использую материал FastCGI. В этом примере Varnish не касается сайтов, не относящихся к Varnish. Это выглядит глупо, но работает ;-) и никто из моих клиентов не жалуется (пока ....).