Nginx截断了要返回的json,可能是因为这个。。。

使用Nginx代理服务器,浏览器控制台:NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 的解决记录

首先浏览器错误截图:

控制提错误截图错误出现了,Network查看response,谷歌Chrom看不到,firfox火狐显示了不完整的json数据(拉到底就能发现)

 排查步骤的思路:

1.网关是否返回了完整json给nginx

postman调网关接口,确实是完整json

2.nginx拿到网关json,返回浏览器时自己发生了截断,给到浏览器的就是不完整的json

复制浏览器请求路径,postman调nginx地址,确实返回不完整的json

问题确定,是nginx截断了数据,进服务器看nginx日志,日志在  nginx安装目录/logs/error.log

2019/10/12 16:01:20 [crit] 29549#0: *494 open() "/usr/local/nginx/fastcgi_temp/7/02/0000000027" failed (13: Permission denied) while reading upstream, client: 10.197.38.85, server: localhost, request: "GET /account/index?p=269718093545213953 

Permission denied,没权限啊,当要响应的json超过nginx.conf配置的proxy_buffers时,proxy_buffers配置示例如下:

proxy_buffer_size 1024k;

proxy_buffers 16 1024k;

proxy_busy_buffers_size 2048k;

proxy_temp_file_write_size 2048k;

proxy_buffers 16 1024K表示代理缓存16个1024K,就是16M,加上上面的一个proxy_buffer_size 1024K,就是17M,当响应超过17M时,nginx会先写到proxy_temp目录下存着,我上面截的时fastcgi_temp目录,也是一个意思

那么再看目录的权限,proxy_temp和fastcgi_temp目录都是运行时nginx生成的,发现所属的用户是nobody,再看nginx.conf配置有个默认注释的 #user nobody ,知道了吧,默认就是nobody,于是放开注释,改成当前登录用户,保存退出:wq

sudo ./nginx -s reload

再看浏览器,OK了

 

你可能感兴趣的:(Nginx)