Я использую HAProxy 1.8.14 на сервере, на котором работает растяжка Debian.
Я хочу направлять запросы в разные бэкэнды для определенного набора доменов, но только для некоторых конкретных путей.Поскольку существует довольно много доменов и разрешены различные пути, я думаю, что решение с использованием карт было бы неплохо.
Я пытался использовать карту для поиска серверной части на основе hdr (host) с условием, что путьдолжно соответствовать регулярному выражению, сопоставленному с hdr (host).Я пробовал следующее, но не могу заставить его работать:
use_backend bk-%[hdr(host),lower,map_dom(/etc/haproxy/host_to_backend.map,bk_default)] if { path_reg %[hdr(host),lower,map_dom(/etc/haproxy/domain_path_whitelist.map)] }
Пример host_to_backend.map:
a.foo.org a
b.foo.org b
c.foo.org c
Пример domain_path_whitelist.map (регулярные выражения не проверены):
a.foo.org ^/(yada|info)/.*$
b.foo.org ^.*$
c.foo.org ^/bar/.*$
Чтобы избежать сложностей регулярных выражений, я также попробовал альтернативу «умоляю»:
use_backend bk-%[hdr(host),lower,map_dom(/etc/haproxy/host_to_backend.map,bk_default)] if { path_beg %[hdr(host),lower,map_dom(/etc/haproxy/domain_path_whitelist.map)] }
... но не повезло.
Это так?можно решить мою конкретную проблему с помощью карт?Если нет, можете ли вы предложить альтернативное решение?