Правила запросов HAProxy Forwarding - PullRequest
0 голосов
/ 06 августа 2020

У меня есть требование, где:

Incoming request- <haproxyIP>:8080/proxy/component/upgrade
Forward to- <serverIP>:8443/component/upgrade

Incoming request- haproxyIP:8080/proxy/component/restore
Forward to- <serverIP>:8443/component/restore

В настоящее время я написал свой интерфейс и бэкэнд как:

frontend http-in
    acl acl_upgrade path_sub /proxy/component/upgrade
    use_backend b_upgrade if acl_upgrade
    acl acl_restore path_sub /proxy/component/restore
    use_backend b_restore if acl_restore

backend b_upgrade
    mode http
    http-request set-path /component/upgrade
    server s1 10.1.1.1:8443 ssl verify none

backend b_restore
    mode http
    http-request set-path /component/upgrade
    server s2 10.1.1.1:8443 ssl verify none

Вместо того, чтобы писать два бэкенда, возможно ли иметь только один бэкэнд, использующий что-то вроде регулярного выражения, основанное на части URL-адреса, например:

Incoming request- <haproxyIP>:8080/proxy/<extracted part>
Forward to- <serverIP>:8443/<extracted part>

Можно ли сделать что-то подобное в haproxy?

1 Ответ

1 голос
/ 07 августа 2020

Можно попробовать использовать карту. Пример ниже не тестировался, но он показывает идею.

url4setpath.cfg

# map url4setpath
/proxy/component/upgrade /component/upgrade
/proxy/component/restore /component/restore
frontend http-in

    use_backend b_default

backend b_upgrade
    mode http
    http-request set-path path,map_beg(url4setpath.cfg,/)
    server s1 10.1.1.1:8443 ssl verify none

Подробнее о картах Введение в HAProxy Maps

...