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

Материал из Энциклопедия интернет-маркетинга MarketWiki

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

Технология обратного прокси широко используется в веб-разработке и администрировании для защиты серверов приложений от прямого воздействия извне, а также для распределения трафика и ускорения загрузки сайтов. Например, популярный веб-сервер Nginx часто настраивают в качестве обратного прокси для приложения, написанного на ASP.NET Core. В такой связке пользователь обращается к стандартному 80-му порту, Nginx принимает этот запрос и перенаправляет его на внутренний порт (например, 5000), где работает само приложение, изолируя его от прямых внешних подключений. Это позволяет также настроить автоматический запуск приложения и управлять им как системной службой.

Главное

[править]

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

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

[править]

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

Основные функции обратного прокси-сервера:

  • Балансировка нагрузки (Load Balancing) - распределение входящих запросов между несколькими внутренними серверами, что повышает общую производительность и отказоустойчивость.
  • Обеспечение безопасности - скрывает IP-адреса и структуру внутренних серверов, фильтрует вредоносный трафик и может выступать в роли точки развёртывания Web Application Firewall (WAF) для обнаружения и блокировки атак, таких как SQL-инъекции и межсайтовый скриптинг.
  • Кэширование - может кэшировать статический и даже динамический контент, чтобы снизить нагрузку на внутренние серверы и ускорить ответ клиентам.
  • Терминация SSL/TLS - может обрабатывать расшифровку зашифрованных HTTPS-запросов, снимая эту вычислительную нагрузку с внутренних серверов.

Преимущества

[править]
Преимущество Описание
Повышенная безопасность Скрывает внутреннюю инфраструктуру от прямых атак из интернета
Балансировка нагрузки Позволяет распределять трафик между несколькими серверами, повышая производительность и надёжность
Улучшенная производительность Кэширование контента снижает нагрузку на backend-серверы и ускоряет доставку контента пользователям
Единая точка входа Упрощает управление сертификатами безопасности, политиками доступа и ведение логов для всех внутренних приложений

Недостатки

[править]
Недостаток Описание
Единая точка отказа Выход из строя самого прокси-сервера может привести к недоступности всех сервисов за ним. Это решается созданием отказоустойчивого кластера
Дополнительная сложность Добавляет ещё один элемент в инфраструктуру, который требует настройки, администрирования и мониторинга
Небольшая задержка Маршрутизация запросов через дополнительный сервер может вносить микро-задержки (доли миллисекунды)

Где используется

[править]
  • Веб-сервера: Nginx и Apache часто используются как обратный прокси для серверов приложений (например, для Node.js, Python (Django), ASP.NET Core, Ruby on Rails), чтобы обслуживать статику и проксировать динамические запросы.
  • Балансировщики нагрузки: специализированные прокси (например, HAProxy, AWS ELB) для распределения трафика между множеством серверов.
  • Защита веб-приложений: WAF-сервисы разворачиваются как обратный прокси для фильтрации и блокировки вредоносных запросов до того, как они достигнут приложения.
  • CDN: сети доставки контента (Content Delivery Networks) по сути являются огромной распределённой сетью обратных прокси-серверов.

Часто задаваемые вопросы

[править]

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

[править]

Это «охранник» на входе в серверную. Все посетители сначала попадают к нему, а он уже решает, к какому сотруднику (внутреннему серверу) их отправить, и потом передаёт посетителю ответ от этого сотрудника.

В чём разница между прямым и обратным прокси?

[править]

Прямой прокси находится на стороне клиента и скрывает его IP-адрес от внешних серверов. Обратный прокси находится на стороне сервера и скрывает внутренние серверы от клиентов.

Как настроить Nginx в качестве обратного прокси?

[править]

В конфигурации Nginx в блоке server (обычно внутри location /) используется директива proxy_pass, которая указывает на адрес внутреннего сервера, например: proxy_pass http://localhost:5000;

Зачем нужна терминация SSL/TLS на обратном прокси?

[править]

Это позволяет централизованно управлять сертификатами безопасности в одном месте, а также снимает нагрузку по расшифровке трафика с внутренних серверов приложений, которые могут быть менее производительными.

Связанные термины

[править]