Skip to content
IRC-CodingIRC-Coding
API GatewayReverse ProxyNginxKongLoad BalancingRoutingИнфраструктура

API Gateway vs Reverse Proxy: различия и применение

Сравнение API Gateway и Reverse Proxy: архитектура, функции, сценарии использования с Nginx и Kong.

S

schutzgeist

10 min read
API Gateway vs Reverse Proxy: различия и применение

API Gateway vs. Reverse Proxy: различия и сценарии применения

API Gateway и Reverse Proxy часто путают, потому что оба компонента размещаются между клиентом и сервером и перенаправляют запросы. Однако они решают разные задачи на разных уровнях абстракции. Если не разобраться в различиях, можно либо добавить слишком много логики в неправильный слой, либо упустить нужный функционал.

Что такое Reverse Proxy?

Reverse Proxy это сервер, который размещается между клиентами и одним или несколькими backend-серверами и перенаправляет входящие запросы на backend. С точки зрения клиента Reverse Proxy выглядит как основной сервер — клиент не знает, какой именно backend-экземпляр обрабатывает запрос.

Слово “Reverse” означает следующее: в отличие от Forward Proxy, который работает на стороне клиента и перенаправляет запросы наружу, Reverse Proxy работает на стороне сервера и принимает запросы извне.

Основные функции Reverse Proxy

  • Маршрутизация: перенаправление запросов на разные backend-серверы в зависимости от URL-пути или имени хоста
  • Load Balancing: распределение запросов между несколькими backend-экземплярами (Round-Robin, Least-Connections, IP-Hash)
  • TLS Termination: завершение SSL/TLS-соединения на прокси, backend общается незашифрованно во внутренней сети
  • Кеширование: сохранение в буфере статического контента или ответов API
  • Сжатие: сжатие ответов (gzip, brotli) перед отправкой клиенту
  • Rate Limiting: простое ограничение количества запросов по IP
  • Health Checks: мониторинг backend-серверов и удаление их из пула при отказе

Популярные решения Reverse Proxy

  • Nginx: самый распространённый Reverse Proxy, высокопроизводительный, гибко настраивается
  • HAProxy: специализирован на Load Balancing, работает на TCP и HTTP уровне
  • Apache с mod_proxy: классический веб-сервер с функциональностью прокси
  • Traefik: современный облачно-ориентированный Reverse Proxy с автоматической Service Discovery
  • Caddy: простой в настройке Reverse Proxy с автоматическим TLS

Что такое API Gateway?

API Gateway это специализированная форма Reverse Proxy, которая предоставляет дополнительные функции, специфичные для API. Он размещается на входе в инфраструктуру API и управляет, защищает и координирует весь трафик API.

Если Reverse Proxy работает на HTTP-уровне (пути, имена хостов, заголовки), то API Gateway работает на уровне API (endpoints, API-ключи, OAuth-токены, quotas, версии API).

Основные функции API Gateway (помимо Reverse Proxy)

  • Аутентификация и авторизация: OAuth 2.0, валидация JWT, проверка API-ключей на каждом endpoint
  • Rate Limiting для API: quotas по API-ключу, по пользователю, по endpoint, не просто по IP
  • Трансформация запросов и ответов: преобразование payload, добавление заголовков, маппирование версий
  • Версионирование API: маршрутизация /v1/users и /v2/users на разные backend или версии
  • Агрегация запросов: объединение нескольких backend-вызовов в один ответ на запрос клиента (API Composition)
  • Трансляция протоколов: REST в gRPC, SOAP в REST, WebSocket в HTTP
  • Аналитика и мониторинг API: детальные метрики по endpoint, по consumer, по API
  • Интеграция с Developer Portal: документация API, self-service регистрация, управление ключами
  • Circuit Breaker: при отказе backend автоматически отправляет ошибку вместо ожидания timeout
  • Mocking: mock-endpoints для разработки и тестирования

Популярные решения API Gateway

  • Kong: Open-Source API Gateway с системой плагинов, основан на Nginx/OpenResty
  • AWS API Gateway: облачное решение, глубоко интегрировано в экосистему AWS
  • Apigee: управление API от Google Cloud, ориентирован на Enterprise
  • Tyk: Open-Source, лёгкий, написан на Go
  • KrakenD: высокопроизводительный API Gateway с фокусом на агрегацию
  • Azure API Management: облачное решение от Microsoft с Developer Portal

Главное различие

Различие можно свести к простой формуле:

Reverse Proxy = инфраструктурный слой (HTTP, TCP, маршрутизация, Load Balancing) API Gateway = слой API (endpoints, аутентификация, quotas, трансформация, аналитика)

Reverse Proxy спрашивает: Какой сервер должен обработать этот запрос? API Gateway спрашивает: Авторизован ли этот клиент вызывать этот endpoint, и сколько он может ещё запросить сегодня?

Таблица сравнения

ХарактеристикаReverse ProxyAPI Gateway
Уровень абстракцииHTTP/TCPAPI/Endpoint
Load BalancingДаДа (наследовано)
TLS TerminationДаДа (наследовано)
КешированиеДаДа (расширено)
АутентификацияБазовая (по IP)OAuth, JWT, API-Key
Rate LimitingПо IPПо токену, по пользователю, по endpoint
Трансформация запросовПереписывание заголовковТрансформация payload, трансляция протоколов
Версионирование APIНетДа
Агрегация запросовНетДа
Circuit BreakerЧастичноДа
АналитикаAccess logsМетрики API по consumer
Developer PortalНетДа
Система плагиновОграниченаДа

Кто использует что?

  • Reverse Proxy: системные администраторы, DevOps-инженеры, которые хотят распределять трафик и централизовать TLS
  • API Gateway: API-команды, Platform-команды, которые управляют, защищают и монетизируют API

Почему это важно в IT и для экзаменов?

На архитектурных экзаменах и сертификациях (AWS Solutions Architect, Azure API Management) регулярно спрашивают о различиях. На практике незнание приводит к архитектурным ошибкам: логику аутентификации втискивают в Reverse Proxy (где ей не место), или API Gateway используют как простой Load Balancer (пустая трата функциональности). Правильное разделение ответственности показывает архитектурную зрелость.

Почему это важно на практике?

Сценарий 1: архитектура Microservices

В архитектуре Microservices с 20 сервисами нужны оба компонента: Reverse Proxy (например, Nginx/Envoy) для Load Balancing и TLS внутри кластера, и API Gateway (например, Kong) как публичный вход для внешних клиентов с аутентификацией, quotas и версионированием.

Сценарий 2: монолит с API

Отдельный backend-сервер с REST API часто нужно защитить Reverse Proxy (Nginx) для TLS и кеширования. API Gateway здесь был бы over-engineering.

Сценарий 3: платформа с несколькими клиентами

Платформа с web-приложением, мобильным приложением и B2B API-клиентами нуждается в API Gateway, так как каждый тип клиента требует разные методы аутентификации, quotas и поля. Reverse Proxy здесь недостаточно.

Практический пример: Nginx как Reverse Proxy vs. Kong как API Gateway

Этот пример показывает одну и ту же задачу — защита endpoint /users — сначала с Nginx как Reverse Proxy, потом с Kong как API Gateway. Сравнение наглядно демонстрирует различие в уровне абстракции и функциональности.

Nginx как Reverse Proxy

# nginx.conf — конфигурация Reverse Proxy
# Перенаправляет запросы на backend-серверы, с TLS и Rate Limiting

upstream backend {
    server 10.0.0.1:3000;
    server 10.0.0.2:3000;
    # Load Balancing: Round-Robin (по умолчанию)
    # Least-Connections: least_conn;
    # IP-Hash (Session-Stickiness): ip_hash;
}

# Rate Limiting Zone: 10 запросов в секунду по IP
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    listen 443 ssl;
    server_name api.example.com;

    # TLS Termination
    ssl_certificate /etc/ssl/certs/api.crt;
    ssl_certificate_key /etc/ssl/private/api.key;
    ssl_protocols TLSv1.2 TLSv1.3;

    # /users -> Backend
    location /users {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # /orders -> другой backend-сервер
    location /orders {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://10.0.0.3:3001;
        proxy_set_header Host $host;
    }

    # Health Check Endpoint
    location /health {
        return 200 "OK";
        add_header Content-Type text/plain;
    }
}

Kong как API Gateway

# kong.yml — Декларативная конфигурация
# Определяет сервисы, маршруты и плагины (Auth, Rate Limiting, Analytics)

services:
  - name: user-service
    url: http://10.0.0.1:3000
    routes:
      - name: users-route
        paths:
          - /users
        methods:
          - GET
          - POST
          - PUT
          - DELETE
        # API-версионирование через заголовки
        strip_path: false

  - name: order-service
    url: http://10.0.0.3:3001
    routes:
      - name: orders-route
        paths:
          - /orders
        methods:
          - GET
          - POST

plugins:
  # JWT-аутентификация для всех маршрутов
  - name: jwt
    config:
      secret_is_base64: false
      run_on_preflight: true

  # Rate Limiting на consumer (не только по IP)
  - name: rate-limiting
    config:
      minute: 100
      hour: 1000
      policy: redis
      redis_host: redis.internal
      limit_by: consumer
      fault_tolerant: true

  # CORS конфигурация
  - name: cors
    config:
      origins:
        - https://app.example.com
      methods:
        - GET
        - POST
        - PUT
        - DELETE
      headers:
        - Authorization
        - Content-Type
      credentials: true

  # Prometheus метрики для API Analytics
  - name: prometheus
    config:
      per_consumer: true

consumers:
  - username: mobile-app
    jwt_secrets:
      - key: mobile-app-key
        secret: mobile-app-secret-2026
  - username: web-app
    jwt_secrets:
      - key: web-app-key
        secret: web-app-secret-2026

Разница заметна сразу: Nginx настраивает HTTP-маршрутизацию и ограничение частоты по IP. Kong настраивает маршрутизацию API с JWT-аутентификацией, лимитированием по consumer, CORS и метриками — всё декларативно, для каждого API-endpoint.

Подробная информация

Может ли API Gateway заменить Reverse Proxy?

Да и нет одновременно. API Gateway вроде Kong часто сам построен на базе Reverse Proxy (Kong использует Nginx/OpenResty под капотом). Он предоставляет все функции Reverse Proxy плюс API-функции. В большинстве архитектур API Gateway заменяет Reverse Proxy для внешнего трафика. Внутри системы, между микросервисами, часто остаётся отдельный Reverse Proxy или Service Mesh (Envoy, Linkerd).

Когда хватает Reverse Proxy?

  • Единая API или монолитное приложение
  • Мало endpoint’ов, без версионирования API
  • Аутентификация реализована в самом бэкенде (центральная аутентификация не требуется)
  • Нет разных квот для разных клиентов
  • Небольшая команда, ограниченная инфраструктура

Когда нужен API Gateway?

  • Несколько API или микросервисов за одним входом
  • Центральная аутентификация (OAuth, JWT) для всех API
  • Разные квоты и лимиты частоты для разных клиентов/API
  • Версионирование и миграция API
  • Aggreation запросов (один запрос клиента -> несколько запросов в бэкенд)
  • API-аналитика и монетизация
  • Developer Portal для самообслуживания

Reverse Proxy vs. Load Balancer vs. API Gateway

Эти три термина часто путают:

  • Load Balancer: распределяет трафик на несколько серверов (Layer 4, TCP/UDP). Фокус на доступности. Примеры: HAProxy, AWS ALB.
  • Reverse Proxy: маршрутизирует HTTP-запросы, TLS, кэширование (Layer 7). Фокус на инфраструктуру. Примеры: Nginx, Caddy.
  • API Gateway: Reverse Proxy плюс функции управления API. Фокус на API-governance. Примеры: Kong, AWS API Gateway.

Load Balancer может быть частью Reverse Proxy. Reverse Proxy может быть частью API Gateway. Уровень абстракции растёт от LB к RP к AG.

Service Mesh vs. API Gateway

Service Mesh (Istio, Linkerd) управляет коммуникацией между микросервисами внутри системы, тогда как API Gateway управляет внешним трафиком. В современных архитектурах оба существуют одновременно: API Gateway снаружи, Service Mesh изнутри. Envoy может выполнять обе роли.

FAQ: API Gateway vs. Reverse Proxy

1. В чём главное различие между API Gateway и Reverse Proxy?

Reverse Proxy работает на уровне HTTP-инфраструктуры (маршрутизация, load balancing, TLS, кэширование). API Gateway работает на уровне API и дополнительно предоставляет аутентификацию, авторизацию, квоты на consumer, трансформацию запросов, версионирование API и аналитику. API Gateway — это специализированный Reverse Proxy с функциями управления API.

2. Можно ли использовать Nginx как API Gateway?

Nginx сам по себе — это Reverse Proxy. С помощью OpenResty (расширения на Lua) или Nginx Plus можно добавить функции API Gateway. Kong построен на Nginx/OpenResty и расширяет его до полноценного API Gateway с системой плагинов.

3. Нужны ли оба — Reverse Proxy и API Gateway?

В сложных архитектурах да. API Gateway управляет внешним API-трафиком с аутентификацией и квотами. Между микросервисами внутри системы можно использовать Reverse Proxy или Service Mesh для load balancing и TLS. В более простых установках API Gateway может взять обе роли.

4. Какова стоимость API Gateway по сравнению с Reverse Proxy?

Open-source Reverse Proxy (Nginx, HAProxy) бесплатны. Open-source API Gateway (Kong, Tyk) тоже, но Enterprise-версии с поддержкой, аналитикой и Developer Portal требуют лицензионные платежи. Cloud API Gateway (AWS, Azure) тарифицируются по количеству вызовов. Операционные издержки API Gateway выше из-за сложности конфигурации.

5. Что такое TLS Termination?

TLS Termination означает, что Reverse Proxy или API Gateway принимает зашифрованное HTTPS-соединение от клиента и выполняет расшифровку. Передача в бэкенд происходит незашифрованным (HTTP) во внутренней сети. Это снимает нагрузку на TLS-операции с бэкенд-серверов и централизует управление сертификатами.

6. Что такое Request Aggregation в API Gateway?

Request Aggregation (или API Composition) означает, что API Gateway разделяет один запрос от клиента на несколько запросов в бэкенд, собирает результаты и возвращает в виде одного ответа. Это уменьшает количество round-trip’ов между клиентом и сервером, особенно полезно для мобильных клиентов с ограниченной пропускной способностью.

7. В чём различие между Load Balancer и Reverse Proxy?

Load Balancer распределяет трафик на несколько серверов, обычно на Layer 4 (TCP/UDP), с фокусом на доступность. Reverse Proxy работает на Layer 7 (HTTP) и дополнительно предоставляет маршрутизацию, TLS, кэширование и манипуляцию заголовками. Reverse Proxy может включать load balancing, но load balancer не предоставляет HTTP-функции.

8. Что такое Circuit Breaker в API Gateway?

Circuit Breaker — это паттерн, при котором API Gateway разрывает соединение с бэкенд-сервисом при повторяющихся сбоях (Open State) и сразу возвращает ошибку, вместо ожидания timeout’а. После периода ожидания (Half-Open) система попробует снова отправить запрос. Это предотвращает каскадные отказы.

9. Что такое Protocol Translation в API Gateway?

Protocol Translation означает, что API Gateway преобразует входящий протокол в другой. Например, REST-запросы от внешних клиентов переводятся во внутренние вызовы gRPC к микросервисам. Это позволяет внешним клиентам использовать REST, а внутри системы применять эффективные протоколы.

10. Когда не стоит использовать API Gateway?

При единственной API с несколькими endpoint’ами, если аутентификация уже реализована в бэкенде, не требуются разные квоты для разных клиентов и команда небольшая. В этом случае достаточно Reverse Proxy вроде Nginx. API Gateway был бы over-engineering и излишне увеличивал бы сложность операций.

11. Что такое Service Mesh и чем он отличается от API Gateway?

Service Mesh (Istio, Linkerd) управляет внутренней коммуникацией между микросервисами с помощью sidecar-прокси. Он предоставляет mTLS, retry, circuit breaking и tracing внутри кластера. API Gateway управляет внешним трафиком. В современных архитектурах оба существуют: API Gateway снаружи, Service Mesh внутри.

12. Что такое API-версионирование в Gateway?

API-версионирование в Gateway означает, что Gateway маршрутизирует разные версии API (например, /v1/users и /v2/users) на разные бэкенд-сервисы или версии. Это позволяет мигрировать плавно: v1 остаётся для старых клиентов, v2 используется новыми. Gateway управляет переходом без изменений в бэкенде.

13. Чем Rate Limiting в Reverse Proxy отличается от API Gateway?

Reverse Proxy обычно ограничивает частоту по IP-адресу (например, 10 запросов/сек на IP). API Gateway может ограничивать по API-ключу, per consumer, per endpoint и per временное окно. Это более гранулярно: компания с 1000 IP’ами, но одним API-ключом, может быть эффективно ограничена.

14. Что такое Developer Portal в API Gateway?

Developer Portal — это веб-интерфейс, где потребители API регистрируются, генерируют API-ключи, читают документацию (OpenAPI/Swagger), проверяют квоты и пробуют API. Это позволяет самообслуживанию и снижает административную нагрузку на API-команду.

15. Может ли API Gateway стать единственной точкой отказа?

Да, если API Gateway упадёт, вся API становится недоступна. Поэтому API Gateway должен работать с высокой доступностью: несколько экземпляров за load balancer’ом, health checks, автоматический failover и backup БД конфигурации Gateway’я. В облачных окружениях это берёт на себя провайдер (например, AWS API Gateway).

Продолжение обучения API

Следующий материал посвящён защите API Gateway — как централизованно настроить аутентификацию, Rate Limiting и защиту от угроз на уровне API Gateway.

Источники и дополнительные материалы

  1. https://nginx.org/en/docs/
  2. https://docs.konghq.com/
  3. https://learn.microsoft.com/en-us/azure/api-management/
  4. https://docs.aws.amazon.com/apigateway/
  5. https://www.martinfowler.com/articles/richardson-maturity-model.html

Рекомендуемые книги по разработке API

Keine Bücher für Kategorie "api-development" gefunden.

Назад к блогу
Share:

Похожие статьи