Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Node.js: nginx, reverse proxy, microservices, load balancing, API gateway

Как работает проксирование запросов через Nginx в микросервисной архитектуре?

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

Короткий ответ

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

Длинный ответ

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

Роль Nginx как реверс-прокси

Nginx размещается на границе сети и принимает все входящие запросы (например, на порт 80 или 443). В его конфигурации задаются правила, которые сопоставляют характеристики запроса (домен, путь URL, метод) с внутренним сервисом-назначением. Таким образом, Nginx действует как единая точка входа (API Gateway в простейшей форме), перенаправляя трафик.

Пример конфигурации

Рассмотрим простой пример, где у нас есть два микросервиса: user-service (порт 3001) и order-service (порт 3002). Конфигурация Nginx может выглядеть так:

server {
    listen 80;
    server_name api.example.com;

    # Все запросы к /users/* идут на user-service
    location /users/ {
        proxy_pass http://user-service:3001/;
        proxy_set_header Host $host;
    }

    # Все запросы к /orders/* идут на order-service
    location /orders/ {
        proxy_pass http://order-service:3002/;
        proxy_set_header Host $host;
    }

    # Балансировка нагрузки, если у сервиса несколько экземпляров
    upstream user-service {
        server 10.0.1.10:3001;
        server 10.0.1.11:3001;
    }
}

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

  • Скрытие внутренней структуры: Клиент видит только один домен (api.example.com), а не внутренние адреса сервисов.
  • Балансировка нагрузки: Блок upstream позволяет распределять запросы между несколькими инстансами сервиса, повышая производительность и доступность.
  • Централизованное управление: В Nginx можно настроить SSL-терминацию, кэширование, ограничение скорости запросов (rate limiting), базовую аутентификацию и логирование в одном месте.
  • Упрощение развертывания: Микросервисы можно обновлять или масштабировать независимо, меняя только конфигурацию прокси.

Вывод: Проксирование через Nginx — это фундаментальный паттерн для организации доступа к микросервисам. Его стоит применять, когда нужно создать единый, безопасный и управляемый вход для клиентов, обеспечить балансировку нагрузки и декомпозировать монолитное приложение без усложнения клиентской логики.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Node.js

    Node.js

  • Networks

Ключевые слова

#nginx

#reverse proxy

#microservices

#load balancing

#API gateway

Подпишись на React Developer в телеграм