Nginx - другой проход прокси на основе ISP - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть динамический веб-сайт, который отображает информацию о поиске пользователяТеперь я хочу, чтобы пользователи, пришедшие от определенного провайдера, отправляли через rproxy на другие серверы, чтобы я мог разделить посетителей на разные серверы.Какой лучший способ сделать это с nginx.Я не хочу использовать модуль местоположения, потому что он не работает так, как я хочу

В качестве примера: я хочу, чтобы nginx направлял isp от оранжевого на другой сервер, а не isp от AT & T.Оба должны получить веб-сайт, который выглядит по-разному, потому что веб-сайты находятся на разных серверах

1 Ответ

0 голосов
/ 21 февраля 2019

Это можно сделать с помощью директив модуля geo.

Определить сопоставление IP-адресов (или сетей) клиентов с IP-адресами вашего внутреннего сервера:

geo $backend {
    default 1.2.3.4;
    1.1.1.1/32 100.100.100.101
    2.2.2.2/32 200.200.200.202
}

Где:

  • в первой строке будет задана переменная backend для IP-адреса внутреннего сервера 1.2.3.4
  • во второй строке задана backend переменная для IP-адреса внутреннего сервера 100.100.100.101, если посетители приходят из сети 1.1.1.1/ 32
  • аналогично предыдущему, вы уже поняли:)

Тогда вы бы proxy_pass использовали эту переменную:

location /
    proxy_pass http://$backend;
    ...
}
...