Я обслуживаю несколько служб из своего домена, используя один и тот же экземпляр 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, а затем устанавливаем условие и / или условие отрицания действия.