Назад | Перейти на главную страницу

Возможна ли эта конфигурация обратного прокси

Сначала я попытаюсь описать свою проблему.

Скажем, у меня есть два разных 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 для этой цели, он может позволить клиентам аутентифицироваться непосредственно на сервере, а также может прокси-порты, но другие решения обратного прокси должны иметь возможность делать то же самое.