整数或整数范围:如1024:65535表示从1024至65535;仅支持使用正整数(如果出现类似小数的标识,其为通常为版本测试),且支持使用的操作符有5个,分别为eq、ge、gt、le和lt;
字符串:支持使用"-i"以忽略字符大小写,支持使用"\"进行转义;如果在模式首部出现了-i,可以在其之前使用"--"标志位;
正则表达式:其机制类同字符串匹配;
IP地址及网络地址
同一个acl中可以指定多个测试条件,这些测试条件需要由逻辑操作符指定其关系。条件间的组合测试关系有三种:"与"(默认即为与操作)、"或"(使用"||"操作符)以及"非"(使用"!"操作符)。
Haproxy进行安全加固 通过ACL限制用户请求速率be_sess_rate(backend) <integer>
be_sess_rate 测试标准
用于测试指定的backend上会话创建的速率(即每秒创建的会话数)是否满足指定的条件;常用于在指定backend上的会话速率过高时将用户请求转发至另外的backend,或用于阻止攻击行为。例如:
backend dynamic
mode http
acl being_scanned be_sess_rate gt 100
redirect location /denied.html if being_scanned
通过ACL指定可访问的用户(定义到frontend段中)阻断非指定请求
在传输层获取样本,通常是TCP/IP 协议的IP和端口,以及建立连接速率等等。而且此部分样本通常用于
"tcp-request connection"指令中的规则之中。
dst : ip #目标地址
dst_port : integer
src : ip #源地址
src_port : integer
#阻断来自非指定IP的访问80端口的请求
acl myhost src 172.16.100.1
acl myport dst_port 80
tcp-request connection reject if !myhost myport
#还可以用block
block if ! myhost myport
Haproxy实现动静分离功能(在frontend段中定义)根据用户访问内容实现动静分离
path_beg <string>
用于测试请求的URL是否以<string>指定的模式开头。下面的例子用于测试URL是否以/static、
/images、/javascript或/stylesheets头。
acl url_static path_beg -i /static /images /javascript /stylesheets
path_end <string>
用于测试请求的URL是否以<string>指定的模式结尾。例如,下面的例子用户测试URL是否以jpg、gif、png、css或js结尾。
acl url_static path_end -i .jpg .gif .png .css .js
根据用户访问内容实现动静分离配置实例frontend http-in
bind *:80
log global
option httpclose
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .jpeg .gif .png .css .js
use_backend static_servers if url_static
default_backend dynamic_servers
backend static_servers
balance roundrobin
server imgsrv1 172.16.200.7:80 check maxconn 6000
server imgsrv2 172.16.200.8:80 check maxconn 6000
backend dynamic_servers
balance source
server websrv1 172.16.200.7:80 check maxconn 1000
server websrv2 172.16.200.8:80 check maxconn 1000
Haproxy实现浏览器控制(在frontend段中定义)hdr_reg <string>正则匹配请求内容,匹配后可做对应的操作
#阻断火狐浏览器发送的请求
acl firefox hdr_reg(User-Agent) -i .*firefox.*
block if firefox
#将IE用户请求分配到静态服务器
acl ie_useragent hdr_reg(User-Agent) -i .*ie.*
use_backend static_servers if ie_useragent
Haproxy实现真实日志记录option forwardfor
option forwardfor [ except <network> ] [ header <name> ] [ if-none ]
允许在发往服务器的请求首部中插入"X-Forwarded-For"首部。
<network>:可选参数,当指定时,源地址为匹配至此网络中的请求都禁用此功能。
<name>:可选参数,可使用一个自定义的首部,如"X-Client"来替代"X-Forwarded-For"。有些独特的web服务
器的确需要用于一个独特的首部。
if-none:仅在此首部不存在时才将其添加至请求报文问道中。