Обратный прокси-сервер — это тип прокси-сервера, который устанавливается между клиентами и внутренними/внутренними серверами, например, HTTP-сервером, таким как NGINX, Apache и т.д., или серверами приложений, написанными на Nodejs, Python, Java, Ruby, PHP и многих других языках программирования.
Это шлюз или сервер-посредник, который принимает запрос клиента, передает его одному или нескольким внутренним серверам, а затем получает от них ответ и возвращает его клиенту, создавая впечатление, что контент получен от самого обратного прокси-сервера.
Как правило, обратный прокси-сервер — это внутренний прокси-сервер, используемый в качестве «внешнего» для контроля и защиты доступа к внутренним серверам в частной сети: обычно он размещается за сетевым брандмауэром.
Он помогает внутренним серверам достичь анонимности для повышения их безопасности. В ИТ-инфраструктуре обратный прокси может также выполнять функции межсетевого экрана приложений, балансировщика нагрузки, терминатора TLS, веб-ускорителя (за счет кэширования статического и динамического содержимого) и многое другое.
В этой статье мы рассмотрим 10 лучших обратных прокси-серверов с открытым исходным кодом, которые можно использовать в системе Linux.
1. HAProxy — ((TCP/HTTP Load Balancer))
HAProxy (HAProxy, что расшифровывается как High Availability Proxy) — это бесплатный, с открытым исходным кодом, очень быстрый, надежный и высококлассный балансировщик нагрузки и прокси-сервер для TCP- и HTTP-приложений, созданный для обеспечения высокой доступности.
HAProxy — это обратный HTTP-прокси, TCP-прокси и нормализатор, терминатор/инициатор/выгрузчик SSL/TLS, кэширующий прокси, выгрузчик сжатия HTTP, регулятор трафика, контент-ориентированный коммутатор, FastCGI-шлюз и многое другое. Это также защита от DDoS и злоупотреблений сервисами.
В основе HAProxy лежит событийно-ориентированный неблокирующий механизм, сочетающий в себе очень быстрый уровень ввода-вывода и многопоточный планировщик, основанный на приоритетах, что позволяет ему легко справляться с десятками тысяч одновременных соединений.
Примечательно, что HAProxy использует протокол PROXY для передачи информации о подключении клиента к внутренним или исходным серверам, чтобы приложение получало всю необходимую информацию.
Среди основных возможностей HAProxy — проксирование, поддержка SSL, мониторинг состояния серверов и их состояния, высокая доступность, балансировка нагрузки, «липкость» (сохранение посетителя на одном и том же сервере даже при различных событиях), переключение контента, переписывание и перенаправление HTTP, защита сервера, ведение журнала, статистика и многое другое.
2. NGINX — (HTTP и Reverse Proxy Web Server)
NGINX — это бесплатный, высокопроизводительный и очень популярный HTTP-сервер и обратный прокси-сервер с открытым исходным кодом. Он также функционирует как прокси-сервер IMAP/POP3. NGINX известен своей высокой производительностью, стабильностью, богатым набором функций, простотой и гибкостью настройки, а также низким потреблением ресурсов (особенно малым объемом занимаемой памяти).
Как и HAProxy, NGINX имеет событийно-ориентированную архитектуру, поэтому он без проблем справляется с десятками тысяч одновременных соединений, поскольку использует протокол PROXY от HAProxy.
NGINX поддерживает ускоренное обратное проксирование с кэшированием с помощью модуля ngx_http_proxy_module, который позволяет передавать запросы на другой сервер по протоколам, отличным от HTTP, таким как FastCGI, uwsgi, SCGI и Memcached.
Важно отметить, что он поддерживает балансировку нагрузки и отказоустойчивость, которые являются жизненно важными аспектами крупных распределенных вычислительных систем. Модуль ngx_http_upstream_module позволяет определять группы внутренних серверов для распределения запросов, поступающих от клиентов.
Это делает ваши приложения более надежными, доступными и надежными, высокомасштабируемыми, с большим временем отклика и пропускной способностью. Кроме того, что касается безопасности, он поддерживает завершение SSL/TLS и многие другие функции безопасности.
3. Varnish — ( Reverse Caching Proxy )
Varnish HTTP Cache (или Varnish Cache, или просто Varnish) — это бесплатный, высокопроизводительный и очень популярный кэширующий обратный прокси-сервер, более известный как ускоритель веб-приложений, предназначенный для повышения производительности HTTP с помощью кэширования на стороне сервера.
Он устанавливается между клиентом и HTTP-веб-сервером или сервером приложений; каждый раз, когда клиент запрашивает информацию или ресурс у веб-сервера, Varnish сохраняет копию этой информации, поэтому в следующий раз, когда клиент запросит ту же информацию, Varnish предоставит ее без отправки запроса веб-серверу, что снизит нагрузку на сервер и, соответственно, ускорит доставку веб-контента.
Varnish использует гибкий язык конфигурирования, известный как Varnish Configuration Language (VLC), который, помимо прочего, позволяет системным администраторам настраивать, как должны обрабатываться входящие запросы, какое содержимое и откуда должно обслуживаться, как должен изменяться запрос или ответ и многое другое.
Varnish также является расширяемым — он может быть расширен с помощью модулей Varnish Modules (VMODs), и пользователи могут писать свои собственные модули или использовать модули, предоставляемые сообществом.
Основным ограничением Varnish является отсутствие поддержки SSL/TLS. Единственный способ включить HTTPS — установить перед ним терминатор SSL/TLS или выгрузчик, например HAProxy или NGINX.
4. Træfɪk — (The Cloud Native Application Proxy)
Træfɪk (произносится как «Траффик») — это бесплатный, современный и быстрый обратный HTTP-прокси и балансировщик нагрузки для развертывания микросервисов с открытым исходным кодом, поддерживающий несколько алгоритмов балансировки нагрузки.
Он может взаимодействовать с различными провайдерами (или механизмами обнаружения сервисов, или инструментами оркестровки), такими как Kubernetes, Docker, Etcd, Rest API, Mesos/Marathon, Swarm и Zookeper.
Его отличительной особенностью является возможность автоматического и динамического управления конфигурацией, что позволяет находить нужную конфигурацию для ваших сервисов. Для этого она сканирует инфраструктуру в поисках необходимой информации и определяет, какой сервис обслуживает тот или иной запрос из внешнего мира. Провайдеры сообщают Træfɪk, где расположены ваши приложения или микросервисы.
Среди других возможностей Træfɪk — поддержка WebSockets, HTTP/2 и GRPC, горячая перезагрузка (постоянное обновление конфигурации без перезапуска), HTTPS с использованием сертификатов Let’s Encrypt (поддержка wildcard-сертификатов), а также поддержка REST API. Также ведется журнал доступа, предоставляются метрики (Rest, Prometheus, Datadog, Statsd, InfluxDB).
Кроме того, Træfɪk поставляется с простым пользовательским веб-интерфейсом на основе HTML, который используется для отслеживания событий. Также поддерживаются автоматические выключатели, повторные запросы, ограничение скорости и базовая аутентификация.
5. Apache Traffic Server — ( Reverse and Forward Proxy Server)
Apache Traffic Server — это бесплатный, с открытым исходным кодом и быстрым кэшированием прямой и обратный прокси-сервер, ранее являвшийся коммерческим продуктом компании Yahoo, а затем переданный в фонд Apache Foundation.
Traffic Server также работает в качестве балансировщика нагрузки и может участвовать в гибких иерархиях кэша. Известно, что в компании Yahoo он обрабатывал более 400 ТБ трафика в день.
Он обладает набором функций keep-alive, фильтрации или анонимизации запросов к контенту и расширяем с помощью API, позволяющего пользователям создавать пользовательские плагины для модификации HTTP-заголовков, обработки ESI-запросов или разработки новых алгоритмов кэширования.
6. Squid — ( Caching and Forwarding HTTP Proxy)
Squid — это бесплатный, известный прокси-сервер и демон Web-кэша с открытым исходным кодом, поддерживающий различные протоколы, такие как HTTP, HTTPS, FTP и другие. В нем реализован режим обратного прокси (httpd-accelerator), который кэширует входящие запросы на исходящие данные.
Поддерживаются широкие возможности оптимизации трафика, управления доступом, авторизации, протоколирования и многое другое.
7. Pound — ( Reverse Proxy и Load Balancer)
Pound — это еще один бесплатный и открытый прокси-сервер с легким обратным прокси и балансировщиком нагрузки, а также внешний сервер для веб-серверов. Он также является SSL-терминатором (расшифровывает HTTPS-запросы от клиентов и отправляет их в виде обычного HTTP на внутренние серверы).
HTTP/HTTPS sanitizer (проверяет корректность запросов и принимает только правильно сформированные), а также отказоустойчивый сервер.
8. Apache — (HTTP Web Server)
HTTP-сервер Apache (также известный как HTTPD), самый популярный веб-сервер в мире, также может быть развернут и настроен на работу в качестве обратного прокси.
Apache отлично справляется с маршрутизацией клиентских запросов к внутренним серверам, повышает безопасность, балансирует нагрузку и оптимизирует работу веб-приложений. Выступая в роли посредника, Apache может эффективно распределять входящий трафик между несколькими экземплярами серверов, обеспечивая высокую доступность и бесперебойную работу пользователей.
Благодаря широким возможностям настройки Apache является лучшим выбором для организаций, ищущих надежное решение для обратного прокси, будь то кэширование контента или доставка приложений.
9. Skipper — ( HTTP Router and Reverse Proxy)
Skipper — это бесплатный HTTP-маршрутизатор с открытым исходным кодом и обратный прокси для композиции сервисов, включая такие варианты использования, как Kubernetes Ingress.
Он создан для управления значительным числом динамически конфигурируемых определений HTTP-маршрутов, превышающим 800 000 маршрутов, имеет сложные условия поиска и обеспечивает гибкую настройку потока запросов с помощью фильтров.
Он может быть развернут как в исходном виде, так и расширен за счет включения пользовательской логики поиска, фильтров и источников конфигурации.
10. Caddy 2 — Fast Server with Automatic HTTPS
Caddy 2 — это веб-сервер и обратный прокси с открытым исходным кодом, известный своей простотой и универсальностью. Он обладает удобным интерфейсом и автоматическим HTTPS по умолчанию, что делает его доступным как для новичков, так и для опытных пользователей.
Caddy 2 предназначен для управления хостингом, HTTP/2, балансировкой нагрузки и проксированием, повышая производительность и безопасность сайтов. Благодаря простоте использования и современным возможностям Caddy 2 завоевал популярность в мире хостинга и управления серверами.