背景:
项目后端程序运行环境为centos7.6。
过程:
首先是前端页面中大小为160多KB以上的图片均无法加载,且后端程序捕获到异常 IOException,查看前端请求发现内存较大的图片均请求响应状态为200,但返回 failed,net::ERR_INCOMPLETE_CHUNKED_ENCODING,并且后端频繁出现tcp管道断开重连异常
Caused by: java.io.IOException: Connection reset by peer
解决过程:
①考虑较小的图片可以加载,应nginx相关配置造成,在 nginx.conf 中 location 下添加了缓冲区的相关配置,不再使用默认的缓冲区配置
location /nc/ {
...
proxy_buffer_size 2048k;
proxy_buffers 16 2048k;
proxy_busy_buffers_size 4096k;
proxy_temp_file_write_size 4096k;
}
②设置后发现1M多的文件也可加载了,但仍然有部分图片无法加载,而 windows 环境下运行程序没有对应问题。
③此时在nginx的日志文件中发现如下报错
open() "/usr/local/nginx/proxy_temp/3/01/0000000013" failed (13: Permission denied)
则此时可发现是由于权限不足造成。赋予文件权限后仍然报错,此时考虑 nginx 执行时的用户不是 root 用户(赋予权限是在 root 下进行),查看 nginx 使用的用户
ps aux | grep nginx
④发现不是所有的使用用户都是 root,还存在一个 nobody。在 nginx 配置文件 nginx.conf 中添加使用用户为 root 的配置
user root;
worker_processes 1;
⑤重启 nginx 服务后发现所有文件均可加载,问题解决。
追溯
后查明nginx在加载超过缓冲区 proxy_temp_file_write_size 设置的大小时会将文件写入 proxy_temp 中,而若此时写入权限不足 nginx 则报拒绝访问的错误。
后续发现一位大佬对同样情况的解释。文章来源:https://www.toymoban.com/news/detail-765163.html
https://www.jianshu.com/p/c1559fd01828文章来源地址https://www.toymoban.com/news/detail-765163.html
到了这里,关于前端请求报错net::ERR_INCOMPLETE_CHUNKED_ENCODING的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!