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即可解决该问题