Как работает Varnish Cache + обратный прокси NGINX

Опубликовано: 2022-08-09

В этой статье мы обсудим обратный прокси Varnish cache NGINX и как его настроить.

Прокси-сервер с упором на кэширование HTTP — Varnish. Он создан как ускоритель HTTP и может функционировать как обратный прокси-сервер для вашего веб-сервера Apache или NGINX. Веб-сайты с большим трафиком и высокой известностью внедрили Varnish.

Оглавление

Что такое Varnish Cache?

Для веб-фирмы кэш часто является наиболее важной частью программного обеспечения. Varnish Cache — это мощный механизм HTTP/обратный HTTP-прокси с открытым исходным кодом, который делает именно то, что следует из его названия: кэширует (или сохраняет) копию веб-страницы при первом просмотре посетителем. Это может ускорить веб-сайт до 1000 процентов. Varnish делает один запрос на ваш сервер для кэширования страницы, после чего обрабатывает все последующие запросы для той же страницы. Это приводит к невероятно быстрой доставке контента и меньшему потреблению ресурсов внутреннего сервера.

  • Основными компетенциями Varnish являются скорость и производительность.
  • Экономия серверной инфраструктуры
  • Масштабируемость. Varnish позволяет вашему сайту удовлетворять спрос независимо от количества посетителей или запросов.
  • Защита от сбоев: Varnish продолжает обслуживать кэшированную информацию, даже если ваш сервер выходит из строя.
  • Гибкость: язык конфигурации Varnish (VCL) позволяет создавать специализированные решения, правила и модули.
  • Расширенный пользовательский интерфейс

Как работает Varnish Cache?

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

Varnish Cache Обратный прокси Nginx

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

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

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

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

Что такое Nginx?

NGINX — это программное обеспечение с открытым исходным кодом, которое можно использовать для потоковой передачи видео, кэширования, обратных прокси-серверов, веб-обслуживания и других функций. Первоначально он начинался как веб-сервер, созданный для максимальной скорости и надежности. NGINX может работать как HTTP-сервер, прокси-сервер электронной почты (IMAP, POP3 и SMTP), обратный прокси-сервер и балансировщик нагрузки для серверов HTTP, TCP и UDP в дополнение к работе в качестве HTTP-сервера.

Что такое обратный прокси?

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

Каждая операция обратного прокси состоит из трех основных этапов:

  1. Сбор запросов на подключение: на границе сети обратный прокси-сервер принимает входящие запросы.
  2. Трехстороннее рукопожатие TCP: соединение с обратным прокси-сервером создается после трехстороннего рукопожатия TCP, и первое соединение закрывается.
  3. Соединение с исходным сервером: используя фиктивный IP-адрес, обратный прокси-сервер подключает исходный сервер к запросу клиента.

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

Как настроить обратный прокси-сервер Varnish Nginx?

Установите Nginx на свой сервер

Прежде всего нам нужно установить Nginx из репозитория Ubuntu с помощью команды apt

 sudo apt update apt install nginx -y

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

 systemctl start nginx systemctl enable nginx

Настройте Nginx на порт 88

Мы настроим Nginx на использование нетрадиционного HTTP-порта 8080 для работы. Для этого мы должны изменить файлы виртуального хоста, расположенные в каталоге «сайты-доступны».

 nano /etc/nginx/sites-available/default

Измените значение строки «listen» на 8080. Сохраните и выйдите.

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

 nginx -t systemctl restart nginx

Еще раз проверьте Nginx с помощью netstat и убедитесь, что он работает на нетрадиционном HTTP-порту 8080.

 netstat -plntu

Он был установлен, и порт 8080 в настоящее время используется веб-сервером Nginx.

Установите Varnish на Ubuntu

Мы должны установить лак с помощью команды apt

 sudo apt install varnish -y

Используя приведенные ниже команды systemctl , запустите лак и настройте его на автоматический запуск при загрузке системы.

 systemctl start varnish systemctl enable varnish

По умолчанию Polish использует порт 6082 для веб-интерфейса администратора и порт 6081 для общего доступа. Убедитесь, что определенные порты указаны в списке с помощью команды netstat для проверки.

 netstat -plntu

Установлен HTTP-ускоритель Varnish.

Настройте Varnish в качестве обратного прокси для Nginx

В качестве обратного прокси для веб-сервера Nginx будет использоваться Varnish. Веб-сервер Nginx будет работать через HTTP-порт 8080, а Varnish — через HTTP-порт 80.

На этом этапе мы настроим Varnish для Nginx, определим внутренний сервер и изменим Varnish, чтобы он использовал HTTP-порт 80 в качестве порта по умолчанию.

Отредактируйте файл default.vcl, сразу же перейдя в каталог конфигурации лака. и убедитесь, что хост 127.0.0.1 и порт 8080

 nano /etc/varnish/default.vcl

Настройка бэкенда завершена.

Следующим шагом является настройка Varnish для использования HTTP-порта 80. Отредактируйте файл конфигурации Varnish, перейдя в каталог «varnish» в каталоге «/etc/default».

 nano /etc/default/varnish

Убедитесь, что ваш порт по умолчанию — 6081, а порт HTTP — 80.

Файл службы лака в каталоге «/lib/systemd/system» теперь должен быть отредактирован. Отредактируйте файл лака.service, перейдя в системный каталог systemd.

 cd /lib/systemd/system nano varnish.service

Замените HTTP-порт 80 лаковым портом 6081 в строке «ExecStart».

Теперь перезагрузите конфигурацию systemd и перезапустите лак.

 systemctl daemon-reload systemctl restart varnish

Проверка лака с помощью команды netstat

 netstat -plntu

завершена настройка лака в качестве обратного прокси для Nginx

Настроить брандмауэр UFW

Удобочитаемый брандмауэр по умолчанию в операционной системе Ubuntu называется «UFW». Используйте команду apt, показанную ниже, чтобы установить их, если у вас еще нет пакета.

 sudo apt install ufw

Мы включим брандмауэр и откроем новые порты SSH, HTTP и HTTPS.

команды ufw, перечисленные ниже.

 ufw allow ssh ufw allow http ufw allow https

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

 ufw enable

Теперь, когда брандмауэр UFW активен, порты HTTP и HTTPS доступны из внешней сети.