Как установить кэш Varnish 6 для Nginx на CentOS/RHEL 8

Кэш Varnish (обычно называемый Varnish) – это мощный и быстрый обратный прокси-ускоритель HTTP с современной архитектурой и гибким языком конфигурации. Обратный прокси просто означает, что это программное обеспечение, которое можно развернуть перед вашим веб-сервером (который является исходным сервером или бэкендом), таким как Nginx, чтобы принимать HTTP-запросы клиентов и пересылать их на исходный сервер для обработки. И он доставляет ответ от исходного сервера клиентам.

Varnish действует как посредник между Nginx и клиентами, но с некоторыми преимуществами в производительности. Его основная цель – ускорить загрузку ваших приложений, работая как кэширующий движок. Он принимает запросы от клиентов и пересылает их в бэкенд один раз для кэширования запрошенного контента (хранит файлы и фрагменты файлов в памяти). Затем все будущие запросы на точно такой же контент будут обслуживаться из кэша.

Это делает ваши веб-приложения загружаемыми быстрее и косвенно улучшает общую производительность вашего веб-сервера, потому что Varnish будет обслуживать контент из памяти, а не Nginx обрабатывает файлы с диска хранения.

Помимо кэширования, Varnish также имеет несколько других вариантов использования, включая маршрутизатор HTTP-запросов, балансировщик нагрузки, брандмауэр веб-приложений и многое другое.

Лак настраивается с использованием высокорасширяемого встроенного языка конфигурации Varnish Configuration Language (VCL), который позволяет вам писать политики о том, как должны обрабатываться входящие запросы. Вы можете использовать его для создания настраиваемых решений, правил и модулей.

В этой статье мы рассмотрим шаги по установке веб-сервера Nginx и кэша Varnish 6 на свежий сервер CentOS 8 или RHEL 8. Пользователи RHEL 8 должны убедиться, что включена подписка Red Hat.

Чтобы настроить полный стек LEMP вместо установки только веб-сервера Nginx, ознакомьтесь с следующими руководствами.

  1. Как установить сервер LEMP на CentOS 8
  2. Как установить сервер LEMP на RHEL 8

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

1. CentOS/RHEL 8 поставляется с последней версией программного обеспечения веб-сервера Nginx, поэтому мы установим его из репозитория по умолчанию, используя следующие команды dnf.

# dnf update
# dnf install nginx

2. После установки Nginx вам нужно запустить, включить и проверить статус, используя следующие команды systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. Если вас немного интересует, вы также можете проверить TCP-сокет Nginx, который работает по умолчанию на порту 80, используя следующую команду ss.

# ss -tpln
Check Nginx TCP Port

4. Если на системе работает брандмауэр, убедитесь, что обновили правила брандмауэра, чтобы разрешить запросы к веб-серверу.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

Шаг 2: Установка кэша Varnish 6 на CentOS/RHEL 8

5. CentOS/RHEL 8 предоставляет модуль Varnish Cache DNF по умолчанию, который содержит версию 6.0 LTS (долгосрочная поддержка).

Чтобы установить модуль, выполните следующую команду.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. После завершения установки модуля вы можете подтвердить версию Varnish, установленную на вашей системе.

# varnishd -V
Check Varnish Version

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

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

8. Затем запустите службу Varnish, включите автозапуск во время загрузки системы и убедитесь, что она работает.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

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

9. В этом разделе мы покажем, как настроить Varnish Cache для работы перед Nginx. По умолчанию Nginx слушает порт 80, обычно каждый блок сервера (или виртуальный хост) настроен на прослушивание этого порта.

Например, посмотрите на блок сервера Nginx по умолчанию, настроенный в основном файле конфигурации (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Ищите раздел блока сервера, как показано на следующем скриншоте.

Nginx Server Block Configuration

10. Чтобы запустить Varnish перед Nginx, вы должны изменить порт по умолчанию Nginx с 80 на 8080 (или любой другой порт на ваш выбор).

Это необходимо сделать во всех будущих файлах конфигурации блока сервера (обычно созданных в каталоге /etc/nginx/conf.d/) для сайтов или веб-приложений, которые вы хотите обслуживать через Varnish.

Например, блок сервера для нашего тестового сайта tecmint.lan находится в файле /etc/nginx/conf.d/tecmint.lan.conf и имеет следующую конфигурацию.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
Nginx Server Block Configuration

Важно: Не забудьте отключить блок сервера по умолчанию, закомментировав его секцию конфигурации в файле /etc/nginx/nginx.conf, как показано на следующем скриншоте. Это позволяет вам начать работу с другими веб-сайтами/приложениями на вашем сервере, иначе Nginx всегда будет направлять запросы к блоку сервера по умолчанию.

Disable Nginx Server Block

11. После завершения настройки проверьте файл конфигурации на наличие ошибок и перезапустите службу Nginx, чтобы применить последние изменения.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. Затем, чтобы принимать HTTP-запросы от клиентов, нам нужно настроить Varnish для запуска на порту 80. В отличие от более ранних версий Varnish Cache, где эти изменения вносились в файл среды Varnish (который теперь устарел), в версии 6.0 и выше.

Нам нужно внести необходимое изменение в файл службы Varnish. Запустите следующую команду, чтобы открыть соответствующий файл службы для редактирования.

# systemctl edit --full  varnish

Найдите следующую строку и измените значение переключателя -a, который указывает адрес прослушивания и порт. Установите порт на 80, как показано на следующем скриншоте.

Обратите внимание, что если вы не указываете адрес, то varnishd будет слушать все доступные интерфейсы IPv4 и IPv6, активные на сервере.

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

Сохраните изменения в файле и выйдите.

13. Далее вам нужно определить сервер backend, который будет посещать Varnish, чтобы получить содержимое. Это делается в основном конфигурационном файле Varnish.

# vi /etc/varnish/default.vcl 

Найдите раздел конфигурации backend по умолчанию и измените строку “default” на server1 (или любое другое имя, которое вы выберете для представления вашего исходного сервера). Затем установите порт на 8080 (или порт прослушивания Nginx, который вы определили в вашем блоке сервера).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

Для этого руководства мы запускаем Varnish и Nginx на одном и том же сервере. Если ваш веб-сервер Nginx запущен на другом хосте. Например, на другом сервере с адресом 10.42.0.247, то установите параметр .host, как показано ниже.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Сохраните файл и закройте его.

14. Затем вам нужно перезагрузить конфигурацию менеджера systemd из-за недавних изменений в файле службы Varnish, затем перезапустите службу Varnish, чтобы применить изменения следующим образом.

# systemctl daemon-reload
# systemctl restart varnish

15. Теперь подтвердите, что Nginx и Varnish слушают на настроенных TCP сокетах.

# ss -tpln
Confirm Nginx and Varnish Ports

Шаг 4: Проверка настройки кэша Nginx Varnish

16. Затем убедитесь, что веб-страницы обслуживаются через кэш Varnish, как показано ниже. Откройте веб-браузер и перейдите по IP-адресу сервера или FDQN, как показано на следующем скриншоте.

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. В альтернативе используйте команду curl, как показано. Используйте IP-адрес вашего сервера или FQDN вашего веб-сайта или используйте 127.0.0.1 или localhost, если тестируете локально.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

Полезные утилиты администрирования Varnish Cache

18. В этом завершающем разделе мы кратко опишем некоторые из полезных утилит, которые поставляются с Varnish Cache и которые вы можете использовать для управления varnishd, доступа к журналам в памяти и общей статистики и многого другого.

varnishadm

varnishadm – утилита для управления работающим экземпляром Varnish. Она устанавливает соединение CLI с varnishd. Например, вы можете использовать ее для вывода списка настроенных бекэндов, как показано на следующем скриншоте (для получения дополнительной информации читайте man varnishadm).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

– утилита varnishlog предоставляет доступ к данным, специфичным для запросов. Она предоставляет информацию о конкретных клиентах и запросах (для получения дополнительной информации читайте man varnishlog).

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

В этом руководстве мы показали, как установить Varnish Cache и запустить его перед сервером Nginx HTTP, чтобы ускорить доставку веб-контента в CentOS/RHEL 8.

Любые мысли или вопросы по этому руководству можно оставить, используя форму обратной связи ниже. Для получения дополнительной информации ознакомьтесь с документацией Varnish Cache.

Основным недостатком Varnish Cache является отсутствие поддержки HTTPS. Чтобы включить HTTPS на вашем веб-сайте/приложении, вам необходимо настроить прокси-сервер завершения SSL/TLS для совместной работы с Varnish Cache для защиты вашего сайта. В нашей следующей статье мы покажем, как включить HTTPS для Varnish Cache с использованием Hitch на CentOS/RHEL 8.

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