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

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

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


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

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

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