Haproxy ACL规则导致故障一例

2022-06-29 20:38:38 浏览数 (1)

今天一个同事来找我反应,说他们的新站点 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,访问正常

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

0 人点赞