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了

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值