Гид по технологиям

Установка Varnish 7 перед Nginx на Rocky Linux 8

• 4 min read • Инфраструктура • Обновлено 27 Nov 2025
Varnish 7 + Nginx на Rocky Linux 8 — установка
Varnish 7 + Nginx на Rocky Linux 8 — установка

Схема: Varnish между клиентом и Nginx

TL;DR

Varnish 7 устанавливают перед Nginx, чтобы отдавать кэшированные ответы из памяти и ускорять сайт. В руководстве показаны команды для Rocky Linux 8: установка репозиториев, установка Varnish, перевод Varnish на порт 80 и изменение Nginx на порт 8080.

К чему это руководство

Это практическое руководство по быстрой установке и настройке Varnish Cache 7 в качестве фронта для Nginx на Rocky Linux 8. Подойдёт системным администраторам и инженерам DevOps, которые хотят уменьшить время отклика сайта и снизить нагрузку на бэкэнд.

Предварительные требования

  • Сервер с Rocky Linux 8.
  • Доступ root или пользователь с sudo.

Установка Varnish 7

  1. Отключите существующие модули varnish, если они есть:
dnf module disable varnish

Ожидаемый диалог подтверждения и завершения отключения модуля.

  1. Установите репозиторий EPEL:
dnf install epel-release -y
  1. Добавьте репозиторий Varnish Cache 7:
curl -s https://packagecloud.io/install/repositories/varnishcache/varnish70/script.rpm.sh | bash
  1. Установите Varnish:
dnf install varnish -y
  1. Проверьте установленный пакет:
rpm -qi varnish

Пример вывода (показывает информацию о пакете, версии и ссылке на сайт проекта):

Name        : varnish
Version     : 7.0.2
Release     : 1.el8
Architecture: x86_64
Install Date: Sunday 13 February 2022 06:24:35 AM UTC
Group       : System Environment/Daemons
Size        : 8907085
License     : BSD
Signature   : (none)
Source RPM  : varnish-7.0.2-1.el8.src.rpm
Build Date  : Wednesday 12 January 2022 02:25:34 PM UTC
Build Host  : 7fc509e75620
Relocations : (not relocatable)
URL         : https://www.varnish-cache.org/
Summary     : High-performance HTTP accelerator
Description :
This is Varnish Cache, a high-performance HTTP accelerator.

Управление сервисом Varnish

Запустите Varnish и включите автозапуск:

systemctl start varnish
systemctl enable varnish

Проверить статус:

systemctl status varnish

Пример статуса показывает, что сервис запущен и активен (active). Обратите внимание на PID и параметры запуска varnishd.

Настройка Varnish для прослушивания на порту 80

По умолчанию Varnish слушает на порту 6081. Чтобы Varnish принимал входящие HTTP-запросы на 80 порту, измените системный unit:

nano /usr/lib/systemd/system/varnish.service

Найдите строку ExecStart и замените порт 6081 на 80. Пример:

ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,2g

Важно: здесь мы указываем выделение памяти для кэша через опцию -s malloc,2g. Подберите значение под объём оперативной памяти на сервере.

Примените изменения:

systemctl daemon-reload
systemctl restart varnish

Убедитесь, что Varnish слушает нужные порты:

ss -antpl | grep varnish

Ожидаемый результат покажет прослушиваемые порты, например 0.0.0.0:80 и localhost:8443.

LISTEN 0      10         127.0.0.1:46093      0.0.0.0:*    users:(('varnishd',pid=2819,fd=13))
LISTEN 0      128          0.0.0.0:80         0.0.0.0:*    users:(('cache-main',pid=2830,fd=6),('varnishd',pid=2819,fd=6))
LISTEN 0      128        127.0.0.1:8443       0.0.0.0:*    users:(('cache-main',pid=2830,fd=9),('varnishd',pid=2819,fd=9))

Настройка Nginx для работы с Varnish

Установите Nginx:

dnf install nginx -y

Измените основной конфиг Nginx, чтобы Nginx слушал на порту 8080 (вместо 80). Откройте файл:

nano /etc/nginx/nginx.conf

Найдите строки:

    listen       80 default_server;
    listen       [::]:80 default_server;

Замените на:

    listen       8080 default_server;
    listen       [::]:8080 default_server;

Запустите Nginx и проверьте статус:

systemctl start nginx
systemctl status nginx

В статусе вы увидите проверку синтаксиса конфига и запуск процессов master/worker.

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-02-13 06:29:02 UTC; 8s ago
  Process: 5627 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)

Проверка работы Varnish

Проверьте HTTP-заголовки, чтобы убедиться, что Varnish обслуживает трафик:

curl -I http://your-server-ip

Ожидаемый ответ включает заголовок X-Varnish и Via с упоминанием Varnish:

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sun, 13 Feb 2022 06:30:06 GMT
Content-Type: text/html
Content-Length: 3429
Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT
ETag: "60c1d6af-d65"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/7.0)
Accept-Ranges: bytes
Connection: keep-alive

Если заголовка X-Varnish нет, значит запрос не прошёл через Varnish — проверьте настройки сети и правила брандмауэра.

Мини-методология развертывания (шаги)

  1. Скопируйте конфигурацию на тестовый сервер или VM.
  2. Отключите модули varnish, подключите репозитории и установите пакеты.
  3. Подготовьте default.vcl для вашего приложения (правила кеширования).
  4. Переключите Varnish на порт 80 и Nginx на 8080.
  5. Протестируйте с помощью curl и инструментов нагрузочного тестирования.
  6. Мониторьте метрики и логирование (varnishlog, varnishstat).
  7. Постепенно переводите трафик с балансировщика на новый стек.

Контрольный список для ролей

  • Системный администратор:

    • Убедился в наличии резервных копий конфигов.
    • Настроил systemd unit и перезапустил сервисы.
    • Проверил порты и SELinux/фаервол.
  • Разработчик / DevOps:

    • Настроил правила кеширования в default.vcl.
    • Протестировал, что динамический контент не кешируется неправильно.
  • QA / тестировщик:

    • Провёл функциональные тесты и проверил заголовки HTTP.
    • Выполнил smoke-тесты после переключения трафика.

Когда Varnish не подходит

  • Если у вас много персонализированного контента, который нельзя кэшировать.
  • Если приложение использует сложную аутентификацию и динамические токены в заголовках.
  • Если ваш стек полностью HTTP/2-only на входе и хотите TLS termination в Varnish (Varnish не поддерживает TLS на входе из коробки).

Важно: для TLS терминации используйте дополнительный слой (например, Nginx или Hitch) перед Varnish.

Альтернативы и доп. варианты

  • Squid — старый HTTP-кеш, подходит для специфичных задач.
  • Nginx с proxy_cache — встроенный кэш уровня веб-сервера.
  • CDN (Cloudflare, Fastly) — вынести кэширование на периметр сети.

Выбор зависит от требований к управлению, масштабируемости и наличию TLS-терминации.

Фактбокс: ключевые параметры из примера

  • Версия Varnish: 7.0.2
  • Порты: исходно 6081, переводим Varnish на 80 и Nginx на 8080
  • Пример выделения памяти: -s malloc,2g (можно менять)
  • Инструменты проверки: curl, ss, systemctl, rpm

Критерии приёмки

  • Varnish отвечает на HTTP-запросы и в ответе присутствует X-Varnish.
  • Nginx слушает на 8080 и корректно отдаёт бэкенд-ответы при обходе Varnish.
  • Нет ошибок в systemd journal для varnish и nginx после перезапуска.

Отладка и распространённые ошибки

  • Проверьте, не занят ли порт 80 другим процессом.
  • Отключите SELinux или настройте разрешения, если Varnish не может читать конфиг.
  • Убедитесь, что firewall (firewalld/iptables) разрешает нужные порты.
  • Используйте varnishlog и varnishstat для анализа кеш-хитов и ошибочных запросов.

Заключение

Поздравляем — вы установили Varnish 7 перед Nginx на Rocky Linux 8. После внедрения следите за метриками и корректируйте правила кеширования в default.vcl. Если нужно, помогу составить пример default.vcl под ваше приложение.

Важно: перед переводом продакшн-трафика протестируйте конфигурацию на стенде и подготовьте план отката.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро