Как работает 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 направит запрос на серверную часть веб-сервера и кэширует результат, как мы только что видели в параграфе об общем обратном прокси-сервере, если запрос не кэшируется.
После кэширования запросов они помещаются в память, а затем могут быть быстро извлечены и отправлены клиентам. Varnish использует язык VCL для выражения настроек, политик кэширования и других правил (язык конфигурации Varnish).
Вы можете отвечать на каждый запрос по-разному, используя этот язык и его варианты. Например, вы можете направить определенные запросы к определенному бэкенду или указать Varnish предпринять другое действие в зависимости от характеристик входящего запроса или его результатов.
Кэшированный материал может по-прежнему предоставляться, даже когда веб-сервер недоступен, благодаря встроенной функции, называемой внутренним опросом, которая является еще одной замечательной функцией Varnish. Varnish продолжит предоставлять кешированный контент в течение периода времени, известного как льготное время, если обнаружит время простоя. Бэкэнд-опрос опрашивает сервер с частотой, которую вы можете установить гибко.
Что такое Nginx?
NGINX — это программное обеспечение с открытым исходным кодом, которое можно использовать для потоковой передачи видео, кэширования, обратных прокси-серверов, веб-обслуживания и других функций. Первоначально он начинался как веб-сервер, созданный для максимальной скорости и надежности. NGINX может работать как HTTP-сервер, прокси-сервер электронной почты (IMAP, POP3 и SMTP), обратный прокси-сервер и балансировщик нагрузки для серверов HTTP, TCP и UDP в дополнение к работе в качестве HTTP-сервера.
Что такое обратный прокси?
Основной функцией обратного прокси-сервера является защита веб-серверов от входящего трафика. Каждый запрос на подключение принимается обратным прокси-сервером, который перенаправляет его через множество серверов, прежде чем подключиться к тому, который обработал запрос.
Каждая операция обратного прокси состоит из трех основных этапов:
- Сбор запросов на подключение: на границе сети обратный прокси-сервер принимает входящие запросы.
- Трехстороннее рукопожатие TCP: соединение с обратным прокси-сервером создается после трехстороннего рукопожатия TCP, и первое соединение закрывается.
- Соединение с исходным сервером: используя фиктивный 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 доступны из внешней сети.