Поделиться через


Обзор YARP

Общие сведения о YARP

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

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

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

  • Маршрутизация: направляет запросы на разные серверные серверы на основе предопределенных правил, таких как шаблоны URL-адресов или заголовки запросов. Например, запросы /images, /api и /db можно направлять на серверы изображений, API и баз данных.
  • Балансировка нагрузки. Распределяет входящий трафик между несколькими внутренними серверами, чтобы предотвратить перегрузку определенного сервера. Распределение повышает производительность и надежность.
  • Масштабируемость. Путем распределения трафика между несколькими серверами обратный прокси-сервер помогает масштабировать приложения для обработки большего количества пользователей и более высоких нагрузок. Серверные серверы масштабируются (добавлены или удалены) без влияния на клиент.
  • Завершение SSL/TLS: снимает процессы шифрования и расшифровки TLS с внутренних серверов, уменьшая их рабочую нагрузку.
  • Абстракция подключения, разделение и управление пространством URL-адресов: исходящие запросы от внешних клиентов и исходящие ответы из серверной части являются независимыми. Эта независимость позволяет отличаться:
    • Версии HTTP, ie, HTTP/1.1, HTTP/2, HTTP/3. Прокси-сервер может обновлять или уменьшать версии HTTP.
    • Время существования подключения, которое позволяет иметь длительные подключения на серверной части при сохранении коротких клиентских подключений.
    • Управление пространством URL-адресов. Перед перенаправлением в серверную часть можно преобразовать входящие URL-адреса. Это абстрагирует внешние URL-адреса от того, как они сопоставляются с внутренними службами. Внутренние конечные точки службы могут изменяться без влияния на внешние URL-адреса.
  • Безопасность: внутренние конечные точки службы могут быть скрыты от внешнего воздействия, защищая от некоторых типов кибератак, таких как атак DDoS.
  • Кэширование. Часто запрашиваемые ресурсы можно кэшировать, чтобы уменьшить нагрузку на внутренние серверы и повысить время отклика.
  • Управление версиями. Различные версии API могут поддерживаться с помощью различных сопоставлений URL-адресов.
  • Упрощенное обслуживание: обратные прокси-серверы могут обрабатывать терминацию SSL/TLS и другие задачи, упрощая настройку и обслуживание бекенд-серверов. Например, SSL-сертификаты и политики безопасности можно управлять на обратном уровне прокси-сервера, а не на каждом отдельном сервере.

Как обратный прокси-сервер обрабатывает HTTP

Обратный прокси-сервер обрабатывает HTTP-запросы и ответы следующим образом:

  • Получение запросов: обратный прокси-сервер прослушивает указанные порты и конечные точки для входящих HTTP-запросов от клиентов.
  • Завершающие подключения: входящие HTTP-подключения завершаются на прокси-сервере, а новые подключения используются для отправки исходящих запросов к целевым адресатам.
  • Запросы маршрутизации. На основе предопределенных правил и конфигураций маршрутизации обратный прокси-сервер определяет серверный сервер или кластер серверов, который должен обрабатывать запрос.
  • Перенаправление запросов: обратный прокси-сервер перенаправляет запрос клиента на соответствующий сервер серверной части, преобразуя путь и заголовки по мере необходимости.
  • Пул подключений: Исходящие соединения объединяются в пул для снижения затрат на подключение и обеспечения эффективного повторного использования соединений в HTTP 1.1, а также обработки параллельных запросов с использованием возможностей HTTP/2 и HTTP/3.
  • Обработка ответов: сервер обработчика обрабатывает запрос и отправляет ответ обратному прокси-серверу.
  • Возвращая ответы: обратный прокси-сервер получает ответ от серверного сервера и перенаправляет его обратно клиенту, выполняя все необходимые преобразования ответа.

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

Почему выбрать YARP вместо других прокси-серверов

YARP предлагает несколько уникальных преимуществ, которые делают его привлекательным выбором для разработчиков:

  • Настройка: YARP очень настраивается, позволяя разработчикам адаптировать прокси-сервер к конкретным потребностям с минимальными усилиями.
  • Интеграция с .NET: основанная на ASP.NET Core, YARP легко интегрируется с экосистемой .NET, что делает его идеальным выбором для разработчиков .NET.
  • Расширяемость: YARP предоставляет широкий набор точек расширяемости, что позволяет разработчикам добавлять пользовательские логики и функции при необходимости, используя знакомый код C#.
  • Масштабируемость. Опция расширения прямой маршрутизации позволяет YARP масштабироваться для поддержки возможностей масштабирования доменных имён и серверов, которые недоступны для большинства обратных прокси-серверов.
  • Активная разработка: YARP активно поддерживается и разрабатывается корпорацией Майкрософт, гарантируя, что она остается up-toв ногу с новейшими технологиями и лучшими практиками.
  • Полная поддерживаемая документация: YARP поставляется с обширной документацией и примерами, что упрощает начало работы и реализацию расширенных функций.
  • Открытый исходный код. Документация YARP и сам YARP являются проектами с открытым исходным кодом. Вклады, отзывы и обратная связь приветствуются.