HAProxy的高级配置选项-ACL篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.ACL概述
acl: 对接收到的报文进行匹配和过滤,基于请求报文头部中的源地址、源端口、目标地址、目标端口、请求方法、URL、文件后缀等信息内容进行匹配并执行进一步操作。 官方文档:http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7 ACL语法如下: acl <aclname> <criterion> [flags] [operator] [<value>] ... acl 名称 条件 条件标记位 具体操作符 操作对象类型
示例: acl my_acl hdr_dom(host) -i node106.yinzhengjie.org.cn
1>.ACL名称
可以使用大字母(A-Z),小写字母(a-z),冒号(":"),点("."),中横线("-")和下划线("_");并且严格区分大小写,比如"my_acl"和"My_acl"完全是两个不同的acl。
2>.ACL derivatives
hdr([<name> [,<occ>]]):
完全匹配字符串 hdr_beg([<name> [,<occ>]]):
前缀匹配 hdr_dir([<name> [,<occ>]]):
路径匹配 hdr_dom([<name> [,<occ>]]):
域匹配 hdr_end([<name> [,<occ>]]):
后缀匹配 hdr_len([<name> [,<occ>]]):
长度匹配 hdr_reg([<name> [,<occ>]]):
正则表达式匹配 hdr_sub([<name> [,<occ>]]):
子串匹配
3>.Criterion-acl
<criterion> : 匹配条件 dst: 目标IP dst_port: 目标PORT src: 源IP src_port: 源PORT hdr <string>: 用于测试请求头部首部指定内容 hdr_dom(host): 请求的host名称,如www.yinzhengjie.org.cn hdr_beg(host): 请求的host开头,如www. img. video. download. ftp. hdr_end(host): 请求的host结尾,如.com .net .cn path_beg: 请求的URL开头,如/static、/images、/img、/css path_end: 请求的URL中资源的结尾,如.gif .png .css .js .jpg .jpeg
4>.flags
<flags>:
-条件标记 -i:
不区分大小写 -m:
使用指定的pattern匹配方法 -n:
不做DNS解析 -u:
禁止acl重名,否则多个同名ACL匹配或关系
5>.operator(操作符)
整数比较:
eq:
等于
ge:
大于等于
gt:
大于
le:
小于等于
lt:
小于
字符比较: -exact match (-m str):
字符串必须完全匹配模式 -substring match (-m sub):
在提取的字符串中查找模式,如果其中任何一个被发现,ACL将匹配 -prefix match (-m beg):
在提取的字符串首部中查找模式,如果其中任何一个被发现,ACL将匹配 -suffix match (-m end):
将模式与提取字符串的尾部进行比较,如果其中任何一个匹配,则ACL进行匹配 -subdirmatch (-m dir):
查看提取出来的用斜线分隔("/")的字符串,如果其中任何一个匹配,则ACL进行匹配 -domain match (-m dom):
查找提取的用点(".")分隔字符串,如果其中任何一个匹配,则ACL进行匹配
6>.value
<value>的类型如下: -Boolean 布尔值false,true -integer or integer range: 整数或整数范围,比如用于匹配端口范围,1024~32768 -IP address/network: IP地址或IP范围, 192.168.0.1 ,192.168.0.1/24 -string exact: 精确比较 substring: 子串 suffix: 后缀比较 prefix: 前缀比较 subdir: 路径,/wp-includes/js/jquery/jquery.js domain: 域名,如www.yinzhengjie.org.cn -regular expression: 正则表达式 -hex block: 16进制
7>.Acl定义与调用
多个acl作为条件时的逻辑关系: 与: 隐式(默认)使用,如"if valid_src valid_port" 或: 使用"or"或"||"表示,如"if invalid_src || invalid_port" 否定: 使用"!"表示,如"if ! invalid_src"
二.
三.
原文:https://www.cnblogs.com/yinzhengjie/p/12150929.html