Регулярное выражение пути HaProxy не работает должным образом - PullRequest
1 голос
/ 14 апреля 2020

Со следующими URL мне нужно использовать бэкэнд A

/yyy/some-name/zzz/some-other-name
/yyy/some-name/zzz/some-other-name/1
/yyy/some-name/zzz/some-other-name/2
/yyy/some-name/zzz/some-other-name/3
/yyy/some-name/zzz/some-other-name/4

, а с этими URL-адресами B

/old/yyy/some-name/zzz/some-other-name
    /yyy/some-name/zzz/some-other-name/1?param=test
    /yyy/some-name/zzz/some-other-name/2?param=test

Я использую следующие правила

acl rule_a path_reg -i ^\/yyy\/.+\/zzz\/([a-z]|-|[0-9])*($|\/[1-4])$
use_backend backend_a if rule_a

default_backend backend_b

Вы можете опробовать регулярное выражение здесь

Проблема в том, что all упомянутые выше URL-адреса собираются в бэкэнд A, но я ожидал, что те, которые содержат запрос параметры для go для бэкэнда B.

1 Ответ

1 голос
/ 14 апреля 2020

Я думаю, вам нужен url_reg вместо этого. Попробуйте это так (я немного упростила схему)

acl rule_a url_reg -i ^\/yyy\/.+\/zzz\/([a-z0-9-])+($|\/[1-4]$)
use_backend backend_a if rule_a    
...