Haproxy ACL规则导致故障一例

今天一个同事来找我反应,说他们的新站点 ulinux.img.linuxidc.com.cn 怎么也访问不了,页面返回的是一台测试机的代码,我第一反应是DNS解析问题,dig了一下 正常,登录后端web抓包没有 ulinux.img.linuxidc.com.cn这个包头的请求。又到同事说的那个测试机抓 结果抓了一大堆。

这时候想应该是 haproxy的规则出问题了,按理说 只要是 img.linuxidc.com.cn 的域名都会分到默认后端上,而且分给那台测试机的ACL也并没有 对ulinux.img.linuxidc.com.cn的匹配,郁闷了,继续找... 后来发现了下面这条规则

acl host_xman_test hdr_reg(host) -i f.[a-z]+.(xman|img).linuxidc.com.cn

hdr_reg(host) 是正则表达式匹配,我仔细一想 原来f.[a-z]+.(xman|img).linuxidc.com.cn 让haproxy理解成了

*f.[a-z]+.(xman|img).linuxidc.com.cn 因为 “.”没有被转义 所以 ulinux.img.linuxidc.com.cn 就被 acl host_xman_test 给拦截了... 赶紧改成了 ^f\.[a-z]+.(xman|img).linuxidc.com.cn重启haproxy,访问正常

域名多的时候用正则匹配一定要小心啊!~~~

HAproxy 的详细介绍请点这里
HAproxy 的下载地址请点这里

推荐阅读:

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

Keepalived+HAProxy配置高可用负载均衡

CentOS 6.3下Haproxy+Keepalived+Apache配置笔记

Haproxy + KeepAlived 实现WEB群集 on CentOS 6

Haproxy+Keepalived构建高可用负载均衡

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/58d79d9b20b7defebf3564a00f4812cf.html