HAProxy可以工作在第七层模型,可通过ACL规则实现基于HAProxy的智能负载均衡系统,HAProxy通过ACL规则完成以下两种主要功能:
通常ACL规则在frontend部分使用,语法如下:
acl 自定义acl名称 acl方法 -i [匹配的路径或文件]
选项含义:
acl:一个关键字,表示定义acl规则的开始,后面需要带上自定义的acl名称;
acl方法:定义实现acl的方法,常见的有:hdr_reg、hdr_dom、hdr_beg、url_sub、url_dir、path_beg、path_end等;
-i:表示忽略大小写,之后带上匹配的路径或正则表达式。
与ACL规则一起使用的HAProxy参数还有use_backend,use_backend带上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例。
acl www_policy hdr_reg(host) -i ^(www.z.cn|z.cn)
acl bbs_policy hdr_dom(host) -i bbs.z.cn
acl url_policy url_sub -i buy_sid=
use_backend server_www if www_policy
use_backend server_app if url_policy
use_backend server_bbs if bbs_policy
default_backend server_cache
解释:定义了www_policy、bbs_policy、url_policy三个ACL规则。
acl url_static path_end .gif .png .jpg .css .js
acl host_www hdr_deg(host) -i www
acl host_static hdr_deg(host) -i img. video. download. ftp.
use_backend static if host_static || host_www url_static
use_backend www if host_www
default_backend server_cache
解释:定义了url_static、host_www、host_static三个ACL规则。