HaProxy 路径正则表达式未按预期工作

HaProxy path regex not working as expected

对于以下网址,我需要使用后端 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

You can try out the regex here

问题是,所有 上面提到的 url 将转到后端 A,但我希望包含查询参数的 url 将转到后端 B。

我认为您需要 url_reg。像这样尝试(我稍微简化了模式)

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