今天一个同事来找我反应,说他们的新站点 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高可用负载均衡集群
CentOS 6.3下Haproxy+Keepalived+Apache配置笔记
Haproxy + KeepAlived 实现WEB群集 on CentOS 6