簡體   English   中英

隨機 HTTP 408 POST 請求,沒有主體被轉移

[英]Random HTTP 408 on POST requests and no body is transferred

前段時間我們注意到nginx連接日志中有多個HTTP 408。 所有此類請求都是 POST 請求,請求時間等於 nginx client_body_timeout。 我們收集了 tcp 轉儲和解密 tls 流量。 看起來客戶端開始請求,發送具有指定非零內容長度 header 的標頭,但是在標頭和正文之間的分隔符之后,根本沒有從客戶端傳輸數據。 Nginx 禮貌地等待任何數據,並在等於 client_body_timeout 的時間后輕輕關閉連接。 誰能澄清這種行為的原因是什么? 一些附加信息:

  • nginx 版本是1.20.2,問題持續了一年多。
  • 問題是零星的。 與每日負載峰值無關,但看起來某些客戶端的 ip 比其他客戶端更頻繁地出現此類錯誤。
  • HTTP 408 的每日平均數量是每 110M 總 POST 請求約 1k。
  • 問題在不同的主機上仍然存在,具有不同的 nginx 實例和不同的服務。
  • 我們嘗試通過 amazon alb 轉發流量,但問題仍然存在。
  • 導致 HTTP 408 的請求是通過 firefox、chrome 以及我們的 ios 和 android 應用程序發送的。
  • 我們無法通過測試重現問題,甚至生成大量與通過 jmeter 發送的客戶端請求相同的請求。
  • 該問題對客戶的體驗影響很小,因為我們沒有對這些錯誤進行投訴。

我們有同樣的問題。 在我們的例子中,nginx 服務器在收到帶有大標頭(20Kb)但正文長度為 0 的 https POST 請求時返回 http 408 代碼 - 具有較小 header 的相同請求可以正常工作。 僅添加 1 個字符的 body(' ') 解決了我們案例中的問題,但我不太明白原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM