У меня есть проблема с HAProxy, это - отрывок моего haproxy.cfg ниже,
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye1 if dom_eye
use_backend eye2 if dom_eye url_a
но я ожидал бы, что весь URL начинается с использования/a eye2.
И, я нашел что когда переключатель порядок use_backend как ниже,
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye2 if dom_eye url_a
use_backend eye1 if dom_eye
это работало на меня.
Но я не понимаю "правила порядка соответствия" Haproxy и не могу найти, что любой объясняет от Google.
Какие-либо идеи об этом?
Я не знаю, почему это не работает для вас, но в документации HAProxy указано:
Правил use_backend может быть сколько угодно. Все эти правила оцениваются в порядке их объявления,и первый подходящий будет назначить бэкэнд.
От: http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#4-use_backend
Глядя на ваш код:
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye1 if dom_eye
use_backend eye2 if dom_eye url_a
Я ожидал, что следующие результаты:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye1
www.mydomin.com/a/b -> eye1
Потому что все они соответствуют первому use_backend
.
Если вы измените конфигурацию на:
acl url_a path_beg /a
acl dom_eye hdr_dom(host) -i www.mydomin.com
use_backend eye2 if dom_eye url_a
use_backend eye1 if dom_eye
, я бы ожидал следующих результатов:
www.mydomin.com -> eye1
www.mydomin.com/a -> eye2
www.mydomin.com/a/b -> eye2
Потому что только URL 2 и 3 соответствуют первому use_backend
.
Не могли бы вы подтвердить, что этого не происходит в вашем конфиге?