在后端使用acl /收缩我的configuration

在我的scheme中,我必须根据包含的urlstring&mode=edit&mode=create在我的服务器之间切换服务器,以平衡负载。 我的configuration是通过脚本从大约100个不同的URL / IP创build的。 我目前的方式有一个前端和两个后端是相当长的,大量的健康检查不适合我的服务器…

我怎样才能把这些东西放在一起listen而不是frontend呢? 我无法弄清楚如何在侦听中使用ACL来确定使用哪个服务器。

 frontend myFrontend bind 127.0.0.1:80 bind 127.0.0.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem redirect scheme https if !{ ssl_fc } use_backend myBackend-edit if { url_sub &mode=edit } or { url_sub &mode=create } default_backend myBackend backend myBackend server srv1 1.1.1.1:10201 cookie srv1 ssl check server srv2 2.2.2.2:10201 cookie srv1 ssl check backup server srv3 3.3.3.3:10201 cookie srv1 ssl check backup backend myBackend-edit server srv1 1.1.1.1:10201 cookie srv1 ssl check backup server srv2 2.2.2.2:10201 cookie srv1 ssl check backup server srv3 3.3.3.3:10201 cookie srv1 ssl check 

正确的关键字是use-server (注意,这是一个破折号,而不是像use_backend下划线。现在我的负载减less,configuration较小,我只search了一些像use_server

所以这是我的工作范例:

 listen myFrontend bind 127.0.1.1:80 bind 127.0.1.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem redirect scheme https if !{ ssl_fc } use-server srv2 if { url_sub &mode=edit } or { url_sub &mode=create } server srv1 1.1.1.1:10201 cookie srv1 ssl check server srv2 2.2.2.2:10201 cookie srv1 ssl check backup server srv3 3.3.3.3:10201 cookie srv1 ssl check backup 

你也可以在那里使用负载平衡,如果你喜欢,坚持使用cookie。

来源: haproxy manpage | 或使用漂亮的:)