haproxy4-acl配置
Posted huxl1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy4-acl配置相关的知识,希望对你有一定的参考价值。
访问控制设定:
匹配后可进行那些操作:
Use _backend : 当符合条件时使用特定的backend后端,
Use_backend <backend> [{if | unless} <condition>]
Block 阻塞
Block {if | unless} <condition>
Acl invalid_src src 172.16.200.2 定义acl匹配 Block if invalid_src 若来自这个地址进行阻塞 Errorfile 403 /etc/fstab 定义错误页
http-request : http请求
http-request {allow | deny} [{ if | unless} <condition>]
tcp-request:
tcp-request connection {allow | deny} [{if | unless} <condition>]
acl:这里他的匹配条件有多种,可以使原地址,也可以是目标地址,目标端口,请求的资源类型,使用的方法等一切
格式:
Acl <name> < 检查哪些内容> [flags] [operator条件] [<value>]
contion检查条件:
Dst : ip 检查后端的ip
Dst_port : 检查后端的端口
Dst_conn 检查后端的套接字
Src : ip 检查原ip
Src_port 检查原端口
fLags :
-i : 忽略字符大小写
-m: 使用特定匹配方式
-n : 禁止主机名反解
-u : acl不能与其他acl同名
-- : 表示结束标志位
Operator:
整数: eq ge gt le lt
字符串:(之前)
-m str : 精确匹配
-m sub : 子串匹配
-m beg : 前缀匹配
-m end : 后缀匹配
-m dir : 路径匹配
-m con : 域名匹配
Acl作为条件时的逻辑关系:
·· And 与
Or || 或
非 ! 非
<value> 的类型可以是:
Boolean : 布尔值
Int : 整数或一个整数范围
Ip : ip地址
Str : 是一个字符串 进行匹配,有多重匹配方式
如 acl invalid_src src 172.16.200.2 检查原目标地址 是172.16.200.2 就符号条件
如: 定义一个acl: acl allowstats src 172.168.200.2 定义acl匹配原ip 定义一个配置后的规则: block if ! allowstats 阻塞除上原ip之外的其他地址访问 在阻塞后自定义错误页: errorloc 403 http://172.16.0.67:10080/errorloc/403.html http-request allow if allowstats : 来自acl定义的这个运行访问
七层的匹配标准有:
Path 路径 (/imgs/logs/log.jpg)
Path: 精确匹配 (path /imgs/logs/log.jpg )
Path_beg :前缀匹配 (path_beg /imgs)
Path_end : 后缀匹配 (path_end .jpg)
Path_reg : z正则表达式模式匹配 (path_reg ^/imgs/*)
Path_sub : 子串匹配 (path_sub logs)
Path_dir : 子路径匹配 (path_dir logs/log.ipg)
Path_dom : 域名子串匹配
如;
Acl static path_end .jpg .jpeg .git .txt .html
Usr_backend staticserver( 后面定义的特定后端) if static 如果是acl中定义的就调用staticserver这个后端
url : str
url : 精确url 匹配
url_beg
url_end
url_dir
url_reg
url_sub
url_dom
req.hdr :请求报文的指定首部
hdr : 精确url 匹配
hdr_beg
hdr _end
hdr _dir
hdr _reg
hdr _sub
hdr _dom
如:
Acl bad_curl hdr_sub(user-Agent) -i curl 请求报文首部包含cutl这个字符串的请求
Block if bad_curl 拒绝curl 访问
以上是关于haproxy4-acl配置的主要内容,如果未能解决你的问题,请参考以下文章