配置绑定到 HAProxy 上同一端口的多个前端是否可以/正确?
frontend A
bind :80
bind :2000-5000
acl rule_about_A
use_backend server_A if rule_about_A
frontend B
bind :80
acl rule_about_B
use_backend server_B if rule_about_B
在此用例中,前端 A 需要绑定到 80 和 2000-5000 范围。对于前端 B,我不想将其绑定到所有这些端口,而只绑定到 80。
我认为如果我以这种方式配置它,它会看起来很干净,而不是使用单个前端并使用 ACL,但似乎该配置使 HAProxy 工作错误 - 有时应用正确的规则,有时则不应用。
在将这些前端合并为一个之前,是否可以使用绑定到相同端口的多个前端?
编辑:顺便说一句,我正在使用 HAProxy 1.5
答案1
不,你不能这样做并期望得到明智的行为。
对端口 80 的请求似乎会随机到达一个前端或另一个前端。这种配置的结果是不确定的,虽然从技术上讲它无效,但从实际目的来看,它是一种无意义的配置。
所有应用于端口 80(或任何端口)的规则都需要在绑定到端口 80 的单个frontend
(或单个)上指定。listen