Как кэшировать с помощью Varnish?
Решение идеально подходит для кэширования страничек на веб-сервере
Данное решение идеально подходит для кэширования страничек на веб-сервере.
Инструмент хорош тем, что его получится установить практически на все существующие дистрибутивы юниксов, линуксов. Если хотите поставить Varnish на Debian, то наберите в командной строке:
sudo apt-get install varnish
Чаще всего решение устанавливается перед веб-серверами на порт 80. Поэтому на Varnish будут поступать все пользовательские запросы. Однако, не всегда на данный порт инструмент Varnish получится инсталлировать, поэтому в качестве альтернативы можно использовать порт 6081. Это вариант, если решение хуже обрабатывает запросы, нежели Nginx. Вы также можете связать Varnish с Nginx, поставив второй на 80 и 81, а первый на 6081 порт. В нашем материале мы рассмотрим случай, когда решение Varnish ставится на 80 порт.
Если ставить на Debian, то придется настраивать параметры запуска инструмента. Это можно сделать в файле:
nano /etc/default/varnish
Нам нужно найти параметр daemon_opts, в котором требуется прописать:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-t 120 \
-s malloc,256m"
В данном случае мы по умолчанию прописали время кэширования 120 сек, а также объем 256 Мб. При необходимости вы можете указать свои желаемые параметры.
С ее помощью получится гибко настраивать функционирование кэша. Это можно сделать посредством конфигурационного файла:
nano /etc/varnish/default.vcl
Внутри файла находится несколько секций. Нам потребуются адреса серверов для дальнейшей работы. На них Varnish будет передавать запросы, если информация в кэше отсутствует. Ответ сервера также будет подвергаться кэшированию. Наберите:
backend www {
.host = "127.0.0.1";
.port = "81";
}
Мы прописали функцию отправки запросов на сервер со стороны инструмента Varnish на 81 порт. На нем должен быть доступен наш ресурс. Главный сервер тоже нужно перенести туда же. Если вы используете Nginx, то напишите:
server {
listen 81; ...
}
Теперь нужно перезапустить Varnish, чтобы наши изменения вступили в силу. Для этого наберите код:
/etc/init.d/varnish restart
Имейте ввиду, что VCL – это почти полноценный язык для разработки. Его инструкции находятся в файле default.vcl, поэтому туда и нужно записывать все ваши пользовательские параметры. При этом, нужно обязательно убирать комментарии с нужных секций.
sub vcl_recv {
...
if (req.url ~ "\.(css|js|png|gif|jp(e)?g)") {
unset req.http.cookie;
}
...
return (lookup);
}
sub vcl_recv {
…
if (req.url ~ "\.(mp4|mp3|avi)") {
return (pass);
}
…
return (lookup);
}
sub vcl_recv {
set req.grace = 2m;
if (req.url ~ "\.(png|jpe?g|gif)") {
set req.grace = 1h;
}
}
sub vcl_fetch {
set beresp.grace = 1h;
}
В качестве вывода стоит отметить, что кэширование жизненно необходимо для любого сервера. Операция снижает нагрузку на машину в десятки или даже сотни раз.
Опубликовано: Апрель 11, 2017