【解決方案】客戶端請求數據較大時,nginx返回數據被截斷


【問題描述】:客戶端使用curl命令向nginx請求數據,當返回數據量較大時,數據被截斷,客戶端無法獲取完整的數據。

【問題原因】:nginx配置文件中包含了proxy_buffer_size、proxy_buffers兩個配置字段,其中proxy_buffer_size用來接收后端服務器response的第一部分,proxy_buffers用來設置讀取被代理服務器的緩沖區數目和大小,如果proxy_buffers關閉,nginx不會等到所有后端數據都被獲取到之后才返回,而是盡快將接收到的數據傳給客戶端,在數據傳完之前,nginx接收的最大緩存不能超過proxy_buffer_size。如果proxy_buffers打開了,nginx會盡可能的讀取后端數據到buffer中,直至proxy_buffers設置的所有buffer都被寫滿或數據都被讀取完,此時nginx開始向客戶端傳輸數據。(參考說明:https://www.nosa.me/2014/11/01/nginx-proxy-buffer%E7%9B%B8%E5%85%B3%E7%9A%84%E8%AE%BE%E7%BD%AE%E5%92%8C%E8%A7%A3%E9%87%8A/)

【解決方案】:在nginx.conf配置文件中新增proxy_buffers、proxy_buffer_size的設置:proxy_buffer_size  1024k; proxy_buffers 4 1024k;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM