Здравствуйте! Всех с прошедшими праздниками!
Исходные данные:
- балансировщик haproxy (1.1.1.1)
- сервер приложений WLS1 (2.2.2.2, консоль управления
http://2.2.2.2:7001/console)
- сервер приложений WLS2 (3.3.3.3, консоль управления http://3.3.3.3:7001/console)
- произвольная клиентская машина, которая не имеет доступ к WLS1 и WLS2
Необходимо пробросить (проксировать) запросы с клиентской машины на консоли управления WLS1 и WLS2.
Примерный вид запросов в браузере с клиентской машины:
- http://1.1.1.1/cons1 - направлял запросы на http://2.2.2.2:7001/console
- http://1.1.1.1/cons2 - на http://3.3.3.3:7001/console
Что было испробовано:
1. Вариант (как в условии):
frontend http_prx bind *:80
mode http
acl cons1 path_beg /cons1
use_backend cons_1 if cons1
acl cons2 path_beg /cons2
use_backend cons_2 if cons2
default_backend http_other
backend cons_1
(варианты преобразования заголовка запроса)
server cons1 2.2.2.2:7001 check
backend cons_2
(варианты преобразования заголовка запроса)
server cons2 3.3.3.3:7001 check
Варианты преобразования заголовка запроса (способ rewrite):
http-request replace-value Host (попытка изменить адрес хоста запроса)
http-request replace-value Path (попытка изменить URN c /cons1 на /console) и т.п.
2. Вариант (использование прослушивания портов 7002/7003, запрос вида http://1.1.1.1:порт/console):
frontend cons1
mode http
bind *:7002
acl cons path_beg /console
use_backend cons_1 if cons
default_backend http_other
frontend cons2
mode http
bind *:7003
acl cons path_beg /console
use_backend cons_2 if cons
default_backend http_other
backend cons1
server cons1 2.2.2.2:7001 check
backend cons2
server cons1 3.3.3.3:7001 check
В итоге, результат - либо в запросе менялся только адрес хоста, либо URN, что в результате возвращает ошибку. Редирект - не вариант (хотя, может быть и вариант), т.к. у клиентской машины нет доступа к WLS1/WLS2. Буду благодарен за любую информацию, в каком направлении искать решение.