Популярные обратные прокси-серверы с открытым исходным кодом для Linux

Дата: 07.09.2022. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Популярные обратные прокси-серверы с открытым исходным кодом для Linux
Изображение: Christina (Unsplash)

В данной статье пойдет речь о популярных обратных прокси-серверах. Они ретранслируют запросы пользователей из внешней сети на один или несколько серверов.

Введение

Обратный прокси-сервер (англ. «reverse proxy») – это тип прокси-сервера, который развертывается между клиентами и внутренними/исходными серверами, например, HTTP-сервером, таким как NGINX, Apache; или серверами приложений, написанными на Nodejs, Python, Java, Ruby, PHP и других языках программирования.

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

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

Это помогает внутренним серверам достичь определенного уровня анонимности для повышения их безопасности. В IT-инфраструктуре обратный прокси-сервер может также выступать межсетевым экраном приложений, балансировщиком нагрузки, терминатором TLS и веб-ускорителем (путем кэширования статических и динамических данных).

Давайте взглянем на 9 популярных обратных прокси-серверов, которые можно использовать в системе Linux.

1.     HAProxy

HAProxy (расшифровывается как High Availability Proxy) – это бесплатное, быстрое, надежное и первоклассное программное обеспечение с открытым исходным кодом для балансировки нагрузки и проксирования приложений на основе TCP и HTTP. Оно было создано для обеспечения высокого уровня доступности.

HAProxy – это обратный прокси-сервер HTTP, прокси-сервер TCP и нормализатор, терминатор/инициатор/загрузчик SSL и TLS. Он также подходит для кэширования данных и регулирования трафика, выступает шлюзом FastCGI. Поможет при защите от DDoS-атак и любых других вмешательств извне.

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

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

2.     NGINX

NGINX – это бесплатный, высокопроизводительный и популярный HTTP-сервер с открытым исходным кодом. Он также является обратным прокси-сервером. NGINX выступает как прокси-сервер IMAP/POP3. Он известен своим высоким уровнем производительности, стабильной работой, огромным количеством функций, простой и гибкой конфигурацией и низким потреблением ресурсов (в частности, небольшим объемом занятой памяти).

Как и HAProxy, NGINX имеет архитектуру, связанную с управлением событиями. Таким образом, он может обрабатывать десятки тысяч одновременных подключений, поскольку использует PROXY-протокол от HAProxy.

NGINX поддерживает функцию ускоренного обратного проксирования с кэшированием с помощью модуля «ngx_http_proxy_module», который дает возможность перенаправлять запросы на другой сервер по протоколам, отличающимся от HTTP, таким как FastCGI, uwsgi, SCGI и memcached.

Важно отметить, что NGINX поддерживает балансировку нагрузки и отказоустойчивость, которые являются крайне важными для корректной работы крупномасштабных распределенных вычислительных систем. Модуль «ngx_http_upstream_module» позволяет обнаруживать группы внутренних серверов для распределения запросов, поступающих от клиентов. Это делает приложения более надежными, доступными и масштабируемыми, с меньшим временем отклика и большей пропускной способностью. Кроме того, есть функция экстренного прекращения работы по протоколам SSL/TLS и дополнительные параметры безопасности.

3.     Varnish HTTP Cache

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

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

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

Возможности Varnish можно расширить с помощью модулей (VMODs). Пользователи могут добавить уже существующие модули или создать свои собственные.

Основным недостатком Varnish является отсутствие поддержки SSL/TLS. Единственный способ включить HTTPS – это развернуть терминатор SSL/TLS или загрузчик, такой как HAProxy или NGINX.

4.     Træfɪk

TræfɪK – это бесплатный, современный и быстрый обратный прокси HTTP с открытым исходным кодом. Он также выступает балансировщиком нагрузки для развертывания микросервисов. Может взаимодействовать с различными поставщиками (или механизмами обнаружения служб и инструментами оркестровки), такими как Kubernetes, Docker, Etcd, Rest API, Mesos/Marathon, Swarm и ZooKeper.

Его характерной особенностью является способность автоматически динамически управлять своей конфигурацией, тем самым подбирая правильные настройки для служб клиента. TræfɪK путем сканирования инфраструктуры находит соответствующую информацию и определяет, какая служба обслуживает тот или иной запрос извне. Поставщики сообщают TræfɪK, где находятся приложения или микросервисы.

Среди других функций TræfɪK есть поддержка WebSocket, HTTP/2 и GRPC, а также своевременная перезагрузка (постоянно обновляет конфигурацию без перезапуска). Он использует HTTPS с сертификатами Let’s Encrypt и предоставляет REST API. Ведет журналы доступа и собирает метрики (Rest, Prometheus, Datadog, StatsD, InfluxDB).

Кроме того, TræfɪK имеет простой веб-интерфейс на основе HTML, необходимый для отслеживания событий. Есть возможность активировать автоматическое прерывание соединения, отправить запросы на повторное подключение, ограничить скорость и добавить базовую аутентификацию.

5.     Apache Traffic Server

Ранее коммерческий продукт, принадлежавший Yahoo, который позже был передан Apache Foundation, Apache Traffic Server – это бесплатный прокси-сервер с открытым исходным кодом и быстрым кэшированием. Он может выступать в роли прямого и обратного прокси-сервера.

Traffic Server также работает как балансировщик нагрузки и может участвовать в гибких иерархиях кэша. Известно, что он обрабатывал более 400 ТБ трафика в день для Yahoo.

Среди функций Apache Traffic Server можно выделить фильтрацию и анонимизацию запросов контента. Функционал может быть расширен с помощью API, что позволяет пользователям создавать пользовательские плагины для изменения HTTP-заголовков, обработки запросов ESI и разработки новых алгоритмов кэширования.

6.     Squid Proxy Server

Squid – это бесплатный и довольно известный прокси-сервер с открытым исходным кодом. Он поддерживает различные протоколы, такие как HTTP, HTTPS, FTP. Squid работает в режиме обратного прокси-сервера (httpd-accelerator), который кэширует входящие запросы для исходящих данных.

Есть функции для оптимизации трафика, контроля за доступом, добавления авторизации и ведения журнала.

7.     Pound

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

8.     Apache HTTP Server

Apache HTTP Server (также известный как HTTPD) — довольно популярный в мире веб-сервер. Он может быть развернут и настроен для работы в качестве обратного прокси.

9.     Skipper

Это бесплатный HTTP-маршрутизатор с открытым исходным кодом. Skipper выступает в роли обратного прокси-сервера для работы со службами, включая функционал, как у Kubernetes Ingress.

Об авторе Игорь Б

Представитель редакции CISOCLUB. Добавляю статьи на сайт.
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован.