Назад | Перейти на главную страницу

Как я могу добиться такой схемы балансировки с nginx?

Я не специалист по сетям, но мне интересно, можно ли создать такую ​​схему с помощью nginx? Основная цель - скрыть реальный IP-адрес клиента за уровнем прокси, где каждый прокси-узел имеет свой собственный IP-адрес и балансирует запросы балансировщика нагрузки (LB) с правилом «циклического перебора». Клиент - это какое-то приложение в моем случае, и я хочу. Желаемый сценарий следующий:

Клиент (приложение) делает http-запрос на some.api.com, LB перехватывает запрос и направляет его на один из узлов (например, прокси 1), прокси 1 получает запрос и повторно отправляет его на some.api.com и отправляет обратно ответ. При таком подходе я хочу избежать ограничений скорости, которые существуют на some.api.com. Возможно ли это сделать?

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

  1. Большинство ограничений скорости применяются по ключу API, а не по IP-адресу (хотя ограничения по скорости IP - это обычная защита низкого уровня). Если вы используете аутентифицированный API, ваши запросы будут агрегироваться вместе независимо от IP.

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

  3. Проблема политики - не нарушать ограничения скорости провайдера. Если у вас есть бизнес-потребность в дополнительных возможностях, поговорите с поставщиком и заплатите ему за это, или, если вы не можете себе этого позволить, объясните это и выработайте с ним какое-то соглашение.