Статьи

Преимущества обратного прокси

Типичный общедоступный веб-сайт ASP.NET, размещенный на IIS, обычно настраивается таким образом, чтобы сервер, на котором установлен IIS, был виден общедоступному Интернету. HTTP-запросы от браузера или клиента веб-службы направляются непосредственно в IIS, где также размещается рабочий процесс ASP.NET. Все функции, необходимые для создания веб-сайта, реализованы на одном сервере. Это включает кэширование, завершение SSL, аутентификацию, обслуживание статических файлов и сжатие. Этот подход прост и понятен для небольших сайтов, но его трудно масштабировать как с точки зрения производительности, так и с точки зрения управления сложностью большого сложного приложения. Это особенно верно, если у вас распределенная сервис-ориентированная архитектура с несколькими конечными точками HTTP, которые часто появляются и исчезают.

Обратный прокси-сервер — это компонент сервера, который находится между Интернетом и вашими веб-серверами. Он принимает запросы HTTP, предоставляет различные услуги и перенаправляет запросы на один или несколько серверов.

шрифта на стороне прокси

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

Балансировки нагрузки

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

Безопасность

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

Аутентификация

Вы можете использовать свой обратный прокси-сервер для обеспечения единой точки аутентификации для всех HTTP-запросов.

Прекращение SSL

Здесь обратный прокси-сервер обрабатывает входящие HTTPS-соединения, расшифровывает запросы и передает незашифрованные запросы на веб-серверы. Это имеет несколько преимуществ:

  • Устраняет необходимость устанавливать сертификаты на многих внутренних веб-серверах.
  • Предоставляет единую точку настройки и управления для SSL / TLS
  • Снимает нагрузку обработки шифрования / дешифрования HTTPS-трафика с веб-серверов.
  • Упрощает тестирование и перехват HTTP-запросов к отдельным веб-серверам.

Обслуживание статического контента

Не строго говоря, «обратное проксирование» как таковое. Некоторые обратные прокси-серверы также могут выступать в качестве веб-серверов, обслуживающих статический контент. Средняя веб-страница часто может состоять из мегабайт статического содержимого, такого как изображения, файлы CSS и файлы JavaScript. Разделяя их по отдельности, вы можете получить значительную нагрузку с внутренних веб-серверов, предоставляя им возможность рендеринга динамического контента.

Кэширование

Обратный прокси-сервер также может действовать как кэш. У вас может быть тупой кеш, срок действия которого просто истекает через заданный период, или, что еще лучше, кеш, который учитывает заголовки Cache-Control и Expires. Это может значительно снизить нагрузку на внутренние серверы.

компрессия

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

Централизованная регистрация и аудит

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

Перезапись URL

Иногда схема URL, которую представляет унаследованное приложение, не идеальна для поиска или поисковой оптимизации. Обратный прокси-сервер может перезаписывать URL-адреса перед их передачей на внутренние серверы. Например, устаревшее приложение ASP.NET может иметь URL-адрес для продукта, который выглядит следующим образом:

http://www.myexampleshop.com/products.aspx?productid=1234

Вместо этого вы можете использовать обратный прокси-сервер для представления оптимизированного для поисковых систем URL:

http://www.myexampleshop.com/products/1234/lunar-module

Объединение нескольких веб-сайтов в одно и то же пространство URL

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

Например, скажем, у меня есть три внутренних веб-сервера:

http://products.internal.net/
http://orders.internal.net/
http://stock-control.internal.net/

Я могу направить их из одного внешнего домена, используя мой обратный прокси-сервер:

http://www.example.com/products/    -> http://products.internal.net/
http://www.example.com/orders/ -> http://orders.internal.net/
http://www.example.com/stock/ -> http://stock-control.internal.net/

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

Так …

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

В настоящее время мы ищем  Nginx  для этой роли. Ожидайте несколько практических постов, связанных с Nginx, о том, как сделать некоторые из этих вещей в самое ближайшее время.

Удачного проксирования!