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

Как настроить вложенные правила acl в HAProxy?

Я обслуживаю несколько служб из своего домена, используя один и тот же экземпляр HAProxy, по адресу domain.com/s1/ и domain.com/s2/ . Я хотел бы выполнять некоторые операции (включая сопоставление списков ACL) только при соблюдении определенных условий в пределах s2. С помощью aclкак

acl service_1         path_beg   /s1/
acl service_2         path_beg   /s2/
acl service_1_path_1  path_beg   /s2/path1/
acl service_1_path_2  path_beg   /s2/path2/

приведет к все запросы совпадают с s2/path1/ и /s2/path2/ шаблонов, что бесполезно, если я знаю, что подавляющее большинство запросов s1.

Можно ли сказать "оцените path_1 или path_2 шаблоны, только если acl service_2 Спички"?

Обратите внимание, что это не тот случай, когда вы хотите AND два условия; Я хочу второй acl даже не вычисляться, если не совпадает первый. Возможно ли такое в HAProxy?

Пример нескольких условий HAProxy

Вот один пример, который я использую:

acl bot_ok path_end txt
acl bot_ok url_reg ^/$
acl derpy3 hdr_sub(user-agent) -i bash curl wget slack
acl derpy3 req.ver !1.1
http-request silent-drop if derpy3 !bot_ok

Разрешить ботам и / или использовать протоколы http, отличные от 1.1 ЕСЛИ они бьют / или .txt файлы.

Мы определяем несколько ACL, а затем устанавливаем условие и / или условие отрицания действия.