如果客户端在发送数据后立即发送 TCP FIN,NGINX 不会向上游代理请求

问题描述

我有客户端 (10.1.30.29),它将 HTTP 请求发送到 NGINX 反向代理(端口 80、10.1.30.11-127.0.0.1)后面的服务器(端口 6500、10.1.30.11-127.0.0.1)。大多数情况下(大约 5 个,共 6 个),服务器没有收到请求。 使用wireshark深入研究,我发现客户端在发送数据后发送TCP FIN ACK数据包,并且之前 NGINX以TCP ACK响应数据:

enter image description here

从 NGINX 到服务器的数据传输开始,但在任何数据传输之前结束。

在其他(正确)情况下,数据完全传输:

enter image description here

与第一种情况的主要区别在于,NGINX 设法在客户端发送 FIN ACK 之前发送数据的 ACK。

在这两种情况下,NIGNX 中的访问日志都包含有关请求的记录;错误日志为空。

不幸的是,我几乎无法影响客户端的行为,但我知道,即使客户端错误地关闭了 TCP 传输,其他 HTTP 服务器实现也可以处理请求数据。问题是有没有办法强制NGINX忽略这种不正确的客户端行为并始终代理请求数据?

P。 S. 已经尝试过 postpone_output NGINX 选项 - 没有运气。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)