浏览器直接访问正常,过了负载均衡就崩了?只因响应头里多了个空格
分享一个今天的生产问题,某系统直接访问正常,经过负载均衡就报连接被重置 Connection Reset,在机房查了两个多小时,最后发现是后端 Java 设置响应头的时候 setHeader("Expires ", xxx),Expires 后面多打了一个空格,导致响应头不符合 HTTP Header 规范(key: value),负载均衡处理不了这种不规范的响应头,直接丢包了。
排查过程难就难在,浏览器有容错,所以直接连接后端就没问题,也没有任何警告,后端也没有任何报错,负载均衡也没有任何报错,排除了一圈感觉谁都没问题,问 AI 也没用,这多的一个空格在响应头里,浏览器 Network 看不到,不用抓包工具根本发现不了,所以把这段经验分享给大家。
