NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

1,900 阅读1分钟

(一)需求

部署到新服务器的时候,有一个接口返回200,但是就是无法正常显示。 排查了很久这里记录下~

(二)问题及说明

1、HTTP返回的错误信息

NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

2、可能的错误原因分析:

  1. nginx配置缓存区设置过小
  2. nginx的临时目录(/proxy_temp)过大或没有权限写入缓存文件
  3. 磁盘空间不足

最终,发现是nginx的缓冲区(Proxy Buffer)设置较小。

导出的内容缓存了,但缓存的不完整,而请求的时候拿到的是缓存的内容;流不完整,所以无法完整加载。

3、配置如下:

location /forecast {
     proxy_pass http://127.0.0.1:9999/;
     proxy_buffer_size 1024k;
     proxy_buffers 16 1024k;
     proxy_busy_buffers_size 2048k;
     proxy_temp_file_write_size 2048k;
}

(三)nginx的缓冲区作用是什么?

如果客户端到nginx速度快,nginx到服务器速度慢,没有缓冲区,一点点数据量就直接发到客户端,十分浪费性能。 有了缓冲区,积累到一定量,再传输到客户端,减少了Tcp请求。 相反,客户端到nginx速度慢,nginx到服务器速度快,没有缓冲区, nginx到服务器的连接就会一直保持在那边,直到客户端接受完毕。 有了缓冲区,返回内容放到缓冲区后,nginx到服务器的连接就能断开了,客户端从缓冲区拉取即可。

以上

参考链接

nginx.org/en/docs/htt…

写在最后的话

学习路上,常常会懈怠

《有想学技术需要监督的同学嘛~》 mp.weixin.qq.com/s/FyuddlwRY…