Сначала я попытаюсь описать свою проблему.
Скажем, у меня есть два разных HTTP-сервера, работающих на двух разных портах за брандмауэром на моем локальном компьютере:
SERVER1: http://localhost:8001
SERVER2: http://localhost:8002
Теперь я хочу открыть эти два канала через один порт. Скажем, через порт 80 вот так:
http://server1.mydomain.com:80
http://server2.mydomain.com:80
Требуется также, чтобы заголовки сохранялись и чтобы клиентский и конечный серверы не знали о прокси-сервере между ними. Поэтому, если дайджест-аутентификация присутствует на конечных серверах, я ожидаю, что она продолжит работать, как будто между ними нет прокси.
Я предполагаю, что этого можно достичь с помощью прозрачного обратного прокси, но поскольку это не моя область знаний, я действительно не уверен, смотрю ли я в правильном направлении.
Итак, вопросы:
Это очень возможно и довольно просто с чем-то вроде HAProxy.
Конфигурация вашего внешнего / внутреннего интерфейса будет выглядеть примерно так.
frontend http-in
bind *:80
mode http
option forwardfor
acl isServer1 hdr(host) -i server1.mydomain.com
acl isServer2 hdr(host) -i server2.mydomain.com
use_backend server1 if isServer1
use_backend server2 if isServer2
backend server1
mode http
server server1 127.0.0.1:8001 check
backend server2
mode http
server server2 127.0.0.1:8002 check
Это зависит от вашего продукта обратного прокси, но это определенно возможно. Мы используем MS TMG для этой цели, он может позволить клиентам аутентифицироваться непосредственно на сервере, а также может прокси-порты, но другие решения обратного прокси должны иметь возможность делать то же самое.