一次奇怪的网络事故

在一个web环境里,nginx是负载均衡器,后面有几个upstream。

现象是一个upstream里面的server全挂了之后,用curl去请求,发现不返回,而且也不断开。

本来以为是resolver搞的,因为如果upstream找不到了就去resolver里指定的dns去解析,这个默认timeout时间是30秒。

可我们那个请求就算是300秒也没断开啊,然后ctrl-c断开后就会在nginx日志里显示499,表示客户端主动断开。

正常这种情况下nginx返回的也是502啊,后端全挂了,而且非常快的返回都是。

通过在服务器上抓包,发现curl过来后nginx有返回一个ack,但是后面就没了。也没重试,也没keepalive啥的。

深刻怀疑是上层防火墙上有什么设置才会这种现象,后面如果能复现必须抓久一点包再看看。