Как ускорить Nginx с помощью кэша Varnish на CentOS 7

Varnish Cache (также называемый Varnish) – это высокопроизводительный HTTP-ускоритель с открытым исходным кодом, предназначенный для ускорения работы веб-серверов.

В этой инструкции мы покажем вам, как установить и использовать Varnish Cache в качестве интерфейса для HTTP-сервера Nginx в CentOS 7. Это руководство также должно работать и для RHEL 7.

Требования:

  1. CentOS 7 с установленным Apache
  2. CentOS 7 со статическим IP адресом

Шаг 1: Установите веб-сервер Nginx на CentOS 7

1. Начните с установки HTTP-сервера Nginx из стандартных репозиториев программного обеспечения CentOS.  Воспользуйтесь менеджером пакетов YUM.

# yum install nginx

Установите Nginx на CentOS 7
Установите Nginx на CentOS 7

2. Когда установка завершится, запустите службу Nginx и добавьте ее в автозагрузку.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

Запустите и добавьте Nginx в автозагрузку
Запустите и добавьте Nginx в автозагрузку

3. Теперь измените правила брандмауэра системы, чтобы разрешить входящие пакеты на 80 порт. Это можно сделать с помощью следующих команд.

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload

Открытие портов Nginx на брандмауэре CentOS
Открытие портов Nginx на брандмауэре CentOS

Шаг 2: Установка кэш-памяти Varnish на CentOS 7

4. Когда существуют предварительно скомпилированные RPM-пакеты для последней версии Varnish Cache 6 (на момент написания статьи версия 6.5), вам необходимо добавить официальный репозиторий Varnish Cache.

Перед этим вам нужно включить репозиторий EPEL для установки нескольких пакетов зависимостей, как показано ниже.

# yum install -y epel-release

5. Теперь установите pygpgme пакет для обработки сигнатур GPG и yum-utils , это набор полезных утилит, которые различными способами расширяют функции yum.

# yum install pygpgme yum-utils

6. Далее создайте файл с именем /etc/yum.repos.d/varnishcache_varnish5.repo, содержащий приведенную ниже конфигурацию репозитория.

=

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

Важно: обязательно замените el и 7 в приведенной ниже конфигурации, а так же ваш дистрибутив Linux и его версию:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. Теперь выполните приведенную ниже команду, чтобы обновить локальный кэш yum и установить пакет varnish cache (не забудьте принять ключ GPG, набрав Y или YES установив пакет):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish

Установка Varnish Cache в CentOS 7
Установка Varnish Cache в CentOS 7

8. После установки кэша Varnish, основной исполняемый файл будет установлен в /usr/sbin/varnishd , а файлы конфигурации Varnish расположены в /etc/varnish/:

  • /etc/varnish/default.vcl – это основной файл конфигурации Varnish, он написан с использованием языка конфигурации vanish(VCL).

9. Теперь запустите службу varnish, добавьте ее в  автозагрузку системы и проверьте ее состояние, чтобы убедиться, что она работает. Сделать это можно следующим образом.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

Запуск Varnish Cache
Запуск Varnish Cache

10. Вы можете проверить, что установка Varnish прошла успешно. Посмотрите расположение исполняемого файла Varnish и его версию установленную в вашей системе.

$ which varnishd
$ varnishd -V

Пример ответа терминала

varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

Шаг 3: Настройка Nginx для работы с кешем Varnish

11. На этом шаге вам необходимо настроить Nginx для работы с кешем Varnish. По умолчанию Nginx прослушивает порт 80, вы должны изменить порт по умолчанию на 8080, чтобы он работал за кэшированием Varnish.

Откройте конфигурационный файл Nginx /etc/nginx/nginx.conf, найдите строку listen 80 и измените ее на listen 8080. Делайте как показано на скриншоте ниже.

# vi /etc/nginx/nginx.conf

Настройка Прослушивающего Порта Nginx
Настройка Прослушивающего Порта Nginx

Примечание: это должно быть сделано во всех конфигурационных файлах блоков сервера (обычно созданных в файле /etc/nginx/conf.d/). Если конечно вы хотите обслуживать все веб-сайты через Varnish.

12. Затем откройте конфигурационный файл службы varnish, найдите параметр ExecStart, указывающий порт, который прослушивает Varnish, и измените его значение с 6081 на 80.

# systemctl edit –full varnish

Строчка должна выглядеть так:

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Изменение Порта Кэша Varnish
Изменение Порта Кэша Varnish

13. Далее настройте Nginx в качестве backend сервера для прокси-сервера Varnish. Это можно сделать в конфигурационном файле /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl

Найдите раздел backend и определите IP-адрес и порт хоста. Ниже приведена базовая конфигурация по умолчанию, установите ее так, чтобы она указывала на ваш фактический контент-сервер.

backend default {
.host = “127.0.0.1”;
.port = “8080”;
}

14. После выполнения всех необходимых конфигураций перезапустите Nginx HTTPD и Varnish cache, чтобы принять изменения.

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

Шаг 4: Тест Varnish cache на Nginx

15. И последние, проверьте включен ли кэш Varnish и работает ли он со Службой Nginx. Для этого используйте приведенную ниже команду cURL для просмотра заголовка HTTP.

# curl -I http://localhost

Вы должны увидеть следующий ответ

HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: “53762af0-12e1”
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

Дополнительную информацию вы можете найти в репозитории Varnish Cache Github

В этой статье мы подробно рассказали, как настроить кэш Varnish для HTTP-сервера Nginx на CentOS 7.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

Моя работа направлена на образование и распространение знаний в области информационных технологий, помогая другим расширять свои возможности и углублять понимание современных технологий.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.