我使用 Nginx 作为反向代理。当向其发送无限量的垃圾信息,并且后端应用程序已经响应了请求(例如出现一些错误)时,Nginx 会耐心等待客户端完成对话后再回复。
我不确定 Nginx 为何会延迟响应(它是双向/全双工连接,并且响应已完全缓冲),可能是某些 HTTP 协议原因,但我主要想知道的是为什么超时时间这么长?为什么要等待 30 秒让客户端停止胡言乱语后再给予响应?在什么(合法)情况下会发生这种情况?我只能想到 slowloris 或其他 DoS 攻击。
我可以想象,当后端(或 Nginx 本身)已经发现 IP 不被允许时,客户端仍在发送标头,因此您必须让它完成发送标头,但如果您有一些异常大的 cookie,那最多只有几千字节。即使在 GPRS 上,这也大约需要 1-2 秒。为什么要将默认值设置为 30 并允许某人保持连接打开并处于活动状态这么长时间,而它知道这只是在浪费 CPU?