Связь должна быть направлена на два разных порта, если у вас два разных сервера с одинаковым внешним IP. например, 119.1.1.1:9000 для сервера A и 119.1.1.1:9001 для сервера B
Если вы не хотите, чтобы конечный пользователь поместил 119.1.1.1:9000, и вы хотите, чтобы оба сервера были подключены к порту 80 - это должно быть сделано так: используйте внутренний прокси-сервер, который прослушивает порт 80 и перенаправляет входящие запросы на основе поддоменов или домен с правильным "внутренним" ip каждого из ваших двух серверов (или "x" количество серверов, если на то пошло).
ПРИМЕР:
ПРЕДПОЛАГАТЬ:
- 119.1.1.1:80 - СЛУШАТЕЛЬ ПОРТ 80
- 119.1.1.1:9000 для сервера А и
- 119.1.1.1:9001 для сервера B
Так что настройте это так:
- foo.com через порт 80 (119.1.1.1:80)
- serverA.foo.com переходит к порту 80 (119.1.1.1:80) и внутренне направляет запрос (не перенаправляет, а внутренне перенаправляет прозрачно) на 119.1.1.1:9000 на основании субдомена, говорящего "serverA"
- serverB.foo.com также переходит на порт 80 (119.1.1.1:80), прозрачно перенаправляется на 119.1.1.1:9001 в зависимости от субдомена, говорящего "serverB"
- все другие запросы обрабатываются маршрутизатором, как бы вы ни хотели - они могут быть отклонены и возвращать, например, 404 (например, foo.com или serverXYZ.foo.com возвращают ошибку 404, поскольку она не соответствует ни одному определению в таблице прокси).
ПРИМЕЧАНИЕ. Что касается вышесказанного, вы на самом деле работаете с 119.1.1.1 - тогда все определения таблиц прокси должны указывать на 127.0.0.1, например:
- serverA.foo.com -> 127.0.0.1:9000
- serverB.foo.com -> 127.0.0.1:9001
- по умолчанию -> 127.0.0.1:9002
При прозрачной маршрутизации конечный пользователь не знает, что связь маршрутизируется - она происходит на стороне сервера без ведома конечного пользователя - только ВЫ знаете . Вы можете сделать это с помощью node-http-proxy для Node.js - вы можете сделать это с nginx - вы можете сделать это с большинством серверов - посмотрите, как внутренне прокси-запросы в документах для вашего сервера на ваш выбор.
Если вам нужно использовать один и тот же порт, вам нужно будет использовать два разных IP-адреса, например 119.1.1.1:80 для сервера A и 119.121.1.2:80 для сервера B