Есть ли у вас идеи, есть ли более простое решение для передачи запросов в разные восходящие потоки на основе IP-адреса посетителя?
Единственное решение, которое я нашел на данный момент:
upstream live {
ip_hash;
server 10.0.0.1;
}
upstream test {
ip_hash;
server 10.0.0.2;
}
location / {
if ($remote_addr = "10.0.0.101") {
proxy_pass http://test;
}
proxy_pass http://live;
// the rest of the bla bla
}
Это решает проблему, если у вас есть только «местоположение» и только один IP-адрес, который должен пройти «тестовый» восходящий поток. Я пробовал оператор if при включении файлов конфигурации (не работает). Еще пробовал ставить if при объявлении апстрима (тоже самое, не работает).
Поэтому, если кто-то делает что-то подобное, помощь будет оценена (я уверен, что я не единственный, у кого есть эта проблема). Мне нужно это решение, чтобы наши разработчики протестировали его в реальной среде ... и это потому, что используемое нами платежное решение позволяет нам отправлять запросы только из текущей инфраструктуры.
Спасибо.
Попробуй это:
geo $upstream_addr {
10.0.0.101/32 test;
default live;
}
...
location / {
proxy_pass http://$upstream_addr;
...
}