0


前端请求报错net::ERR_INCOMPLETE_CHUNKED_ENCODING

背景:

项目后端程序运行环境为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.jianshu.com/p/c1559fd01828

标签: nginx java linux

本文转载自: https://blog.csdn.net/qq_65652570/article/details/130413793
版权归原作者 我们就是你 所有, 如有侵权,请联系我们删除。

“前端请求报错net::ERR_INCOMPLETE_CHUNKED_ENCODING”的评论:

还没有评论