1. 前端接口返回json數據不完整:
原因:當返回數據量過大時,nginx將數據進行攔截,數據量小時,nginx是將返回的數據放在內存中,然後轉發給客戶端進行相應,當數據量過大時,nginx會將數據作爲臨時文件存放在服務器端,Nginx 的 buffer 機制,對於來自 FastCGI Server 的 Response,Nginx 將其緩衝到內存中,然後依次發送到客戶端瀏覽器。緩衝區的大小由 fastcgi_buffers 和 fastcgi_buffer_size 兩個值控制。
當出現這種問題時,可以通過查看nginx的logs/下的日誌文件查詢報錯記錄
*1380677 pwritev() "/usr/local/nginx/proxy_temp/4/07/0000027074" failed (28: No space left on device) while reading upstream, client: 122.231.224.115, server: teiimwork.com, request: "POST /api/agree/findDrugDetails HTTP/1.1", upstream: "http://127.0.0.1:8080/api/agree/findDrugDetails", host: "teiimwork.com", referrer: "https://teiimwork.com/"
可以看出 No space left on device是因爲磁盤空間不足,臨時文件無法存放導致的返回數據不完整
還有一種可能就是nginx的運行用戶,對fastcgi的臨時文件存放路徑沒有讀寫權限導致,通過chmod 777 /usr/local/nginx/fastcgi_temp賦予讀寫權限
fastcgi的配置:fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;
配置在http/server/location都可
server {
listen 443;
server_name teiimwork.com;
client_max_body_size 10M;
fastcgi_buffers 8 4K;
fastcgi_buffer_size 4k;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
然後重啓nginx即可解決該問題