@YuriyTigiev

Как настроить NGINX forward proxy в docker c несколькими public IP адресами c опцией round-robin?

Есть аппликация в виде сервиса в Docker которая обращается к внешним api.site1.com и api.site2.com
Докер запущен на хостинг сервере с несколькими внешними IP (eth0, eth0:1, eth0:2).
На сайте стоит ограничение на кол-во запросов с одного IP.
Необходимо настроить nginx forward proxy в Docker так, чтобы каждый новый запрос из аппликации через прокси шел со следующего IP адреса из пула паблик IP адресов (round-robin) хостинг машины.

Вопрос, как должен выглядеть docker и docker-compose.yml для решения этой задачи?
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov Куратор тега Docker
Системный администратор
Допустим у api.site1.com адрес 192.168.1.1, а на сетевой карте три IP адреса 10.0.0.1, 10.0.0.2 и 10.0.0.3, тогда должно сработать:
iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
         -m statistic --mode nth --every 3 --packet 0 \
         -j SNAT --to-source 10.0.0.1

iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
         -m statistic --mode nth --every 2 --packet 0 \
         -j SNAT --to-source 10.0.0.2

iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
         -j SNAT --to-source 10.0.0.3

Можно ещё попробовать поиграть с proxy_bind и несколькими upstream
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы