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

Кэш Varnish (также называемый Varnish) – это свободно распространяемый высокопроизводительный HTTP-ускоритель, предназначенный для ускорения веб-серверов. В наших предыдущих статьях мы объяснили, как настроить кэш Varnish для Apache на CentOS 7 и CentOS 8.

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

Требования

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

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

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

# yum install nginx
Install Nginx on CentOS 7

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

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

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
Open Nginx Port on Firewall

Шаг 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 
Install Varnish Cache in CentOS 7

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

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

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

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start 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, вы должны изменить порт Nginx по умолчанию на 8080, чтобы он работал за кэшированием Varnish.

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

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

Примечание: Это должно быть сделано во всех файлах конфигурации блока сервера (обычно создается в /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
Change Varnish Cache Port

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

# vi /etc/varnish/default.vcl 

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

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

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

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

Шаг 4: Тестирование кэша Varnish на 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: https://github.com/varnishcache/varnish-cache

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

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-7/