haproxy 配置文件详解 之 ACL 智能负载均衡
由于HAProxy 可以工作在七层模型下, 因此,要实现 HAProxy 的强大功能,一定要使用强大灵活的ACL 规则,通过ACL 规则可以实现基于HAProxy 的智能负载均衡系统。
HAProxy 通过ACL 规则完成两种主要的功能,分别是:
1) 通过设置的ACL 规则检查客户端请求是否合法。如果符合ACL 规则要求,那么就将放行,反正,如果不符合规则,则直接中断请求。
2) 符合ACL 规则要求的请求将被提交到后端的backend 服务器集群,进而实现基于ACL 规则的负载均衡。
HAProxy 中的ACL 规则经常使用在frontend 段中,使用方法如下:
acl 自定义的acl名称 acl方法 -i [匹配的路径或文件]
其中:
acl:是一个关键字,表示定义ACL 规则的开始。后面需要跟上自定义的ACL 名称 。
acl 方法 : 这个字段用来定义实现ACL 的方法,HAProxy 定义了很多ACL 方法,经常使用的方法有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end 等。
经常使用的方法:
hdr_beg(host) #精确匹配主机, 表示以什么开头的域名
hdr_reg(host) #正则匹配主机,表示以什么开头的域名
path_beg #匹配路径,表示以什么路径开头
path_end #匹配路径结尾,表示以什么路径结尾
url_sub : 表示请求url 中包含什么字符串,例如:acl file_req url_sub -i killall=,表示在请求url 中包含killall=,则此控制策略返回true
url_dir : 表示请求url 中存在哪些字符串作为部分地址路径,例如 acl dir_req url_dir -i allow,表示在请求url 中存在allow作为部分地址路径,则此控制策略返回true,否则返回false
-i:表示忽略大小写,后面需要跟上匹配的路径或文件或正则表达式。
与ACL 规则一起使用的HAProxy 参数还有use_backend,use_backend 后面需要跟上一个backend 实例名,表示在满足ACL 规则后去请求哪个backend实例,与use_backend 对应的还有default_backend 参数,它表示在没有满足ACL 条件的时候默认使用哪个后端backend。
下面列举几个常见的ACL 规则例子:
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
最新文章
- 二刷Cracking the Coding Interview(CC150第五版)
- UIWebView获取网页点击事件
- 移动端调试工具推荐 小苹果和debugap
- CentOS安装NodeJS v0.10.25 + Express
- BI案例:某通信企业综合报表和决策分析系统实施案例
- 用HAProxy和KeepAlived构建高可用的反向代理
- poj 1054 The Troublesome Frog (暴力搜索 + 剪枝优化)
- wpf DataGrid 双击获取当前行的控件
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)
- PHP与XML
- Javascript 基础知识2017-03-17
- spring web项目下,判断项目是否启动完成
- java实现单链表反转(倒置)
- yum upgrade和yum update的区别
- [Algorithm] Fibonacci Sequence - Anatomy of recursion and space complexity analysis
- [日常] C语言中指针变量
- JS动态生成表格后 合并单元格
- 【常用配置】——WPS文字常用快捷键大全【史上最全面】转
- Python运算符之三元运算符
- 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版
热门文章
- Java代码质量检查checkstyle, pmd, cpd, p3c,findbugs, jacoco, sonarquebe以及和Jenkins集成
- C++分治策略实现二分搜索
- JavaIO学习:转换流
- golang学习笔记 go 相关命令
- excel中统计COUNTIFS的值为0
- 我是如何一步步编码完成万仓网ERP系统的(九)产品库设计 5.产品属性项
- 记一次CSS反爬
- GIT篇章(一)
- js生成一定范围内的随机整数
- 英语chrysopal金绿宝石chrysopal单词