HAproxy - Как перенаправить трафик на сервер с помощью соответствующего заголовка? - PullRequest
0 голосов
/ 28 октября 2019

Например, заголовок содержит: X-DEMO-HOST-VERSION: test - как мне нужно настроить конфигурацию haproxy для пересылки на конкретный сервер? Это можно сделать в бэкэнде или во внешнем интерфейсе?

Что касается документации, я немного запутался.

1 Ответ

0 голосов
/ 28 октября 2019

Вам нужно проверить значение заголовка (hdr в haproxy) через ACL. Попробуйте:

frontend header_front
    bind *:80
    mode http
    option forwardfor if-none
    acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
    use_backend test_backend if demo_host_version
    default_backend prod_backend

backend test_backend
    ...

backend prod_backend
    ...

Тест для вас заголовок:

    acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
    use_backend test_backend if demo_host_version

Логика: IF X-DEMO-HOST-VERSION=test использование test_backend ELSE использование prod_backend


UPD: если вам нужен acl для пути в URL (example.com/test/):

    acl demo_host_path path_beg /test/
    use_backend test_backend if demo_host_path

Если вам нужно использовать два ACL в операторе if, используйте его:

    acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
    acl demo_host_path path_beg /test/
    use_backend test_backend if demo_host_path demo_host_version

UPD для проверки URL:

Проверка субдомена. Если у вас домен test.example.com или test.abc.com, попробуйте:

acl host_sub_domain hdr_beg(host) -i test

Для полной проверки домена, например, test.example.com, попробуйте:

acl host_full_domain hdr(host) -i test.example.com
...