NGINX+PM2+NODEJS Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING 200错误

本文详细解析了Chrome浏览器中JS加载失败并提示net::ERR_INCOMPLETE_CHUNKED_ENCODING的问题,通过分析NGINX错误日志,发现是由于NGINX配置文件中用户权限设置不当导致。通过修改NGINX配置文件中的用户权限,从nobody改为root,成功解决了此问题。

这个问题有点烦

Chrome在打开页面的时候提示有一个JS加载状态是failed
其他资源貌似是正常的。同时Console提示

net::ERR_INCOMPLETE_CHUNKED_ENCODING 200

排查错误
打开NGINX error.log

2019/02/20 15:12:52 [crit] 5910#0: *4 open() “/root/app/nginx//proxy_temp/1/00/0000000001” failed (13: Permission denied) while reading upstream, client: XXX.XXX.XXX.XXX, server: www.XXXXXX.com, request: “GET /index.js HTTP/1.1”, upstream: “http://XXX.XXX.XXX.XXX:8080/index.js”, host: “www.XXXXXX.com”, referrer: “http://www.XXXXXX.com/

重点来了:13: Permission denied

启动NGINX前的目录权限
在这里插入图片描述
启动NGINX后的目录权限
在这里插入图片描述

这里我确认是root权限启动的。那么为什么会出现这个问题呢?

原因在于NGINX.CONF配置

在这里插入图片描述
原来的配置是:

#user nobody;

那么启动NGINX的时候默认的目前权限就全部变成了nobody,然后就会出现这个奇怪的错误。
那么修改NGINX配置为:

user root;

然后再停止NGINX服务,再重启,问题解决。

<think> 首先,用户在询问接口请求时Nginx出现net::ERR_INCOMPLETE_CHUNKED_ENCODING错误的解决方案。用户提供了几个引用,我需要基于这些信息来构建回答。 关键点来自引用: - 引用[1]:描述了使用Nginx代理的服务突然无法访问,并有这个错误。 - 引用[2]:提到生产环境中出现这个错误,接口无响应。 - 引用[3]:涉及到大文件(图片)加载失败,并有后端异常如IOException。 - 引用[4]:给出了Nginx配置的建议,如增加缓冲区大小。 - 引用[5]:提到了磁盘空间耗尽导致的问题,特别是Docker容器引起的。 用户的问题是针对接口请求的,所以我需要聚焦在API请求上,而不是页面加载。 错误net::ERR_INCOMPLETE_CHUNKED_ENCODING通常表示在HTTP响应传输过程中,分块编码(chunked encoding)未完成,导致浏览器或客户端接收的数据不完整。这可能是由于后端问题、Nginx配置问题或资源限制造成的。 基于引用,常见的解决方案包括: 1. **增加Nginx缓冲区大小**:如引用[4]中提到的proxy_buffer_size、proxy_buffers等设置。 2. **检查资源限制**:如磁盘空间耗尽(引用[5]),需要清理空间或检查Docker容器。 3. **后端服务问题**:引用[3]中提到后端有IOException,可能后端服务崩溃或被中断。 4. **网络或代理问题**:Nginx作为代理,可能有超时或传输中断。 回答结构: - 既然用户要求中文回答,我必须确保整个响应都是中文。 - 结构清晰:逐步解决问题。 - 使用系统级指令:行内数学表达式用$...$(但这里可能不需要),独立公式用$$...$$(同样可能不适用)。确保LaTeX语法正确。 - 添加引用标识:在末尾自然地添加,如[^1]。 - 生成相关问题:在回答后添加相关问题部分。 用户提到“参考站内引用”,并提供了[1]到[5],所以我需要在回答中引用这些。 可能的步骤: 1. **确认错误**:解释错误含义。 2. **常见原因**:列出基于引用的原因。 3. **解决方案**:逐步给出修复方法。 4. **验证**:建议如何测试。 最终,回答问题:接口请求时Nginx出现net::ERR_INCOMPLETE_CHUNKED_ENCODING错误的解决办法。 生成相关问题: - 基于主题,如Nginx配置优化、如何监控磁盘空间等。 确保回答真实可靠:基于提供的引用,不添加未经验证的建议。 </think> ### 接口请求时Nginx出现net::ERR_INCOMPLETE_CHUNKED_ENCODING错误的解决方案 该错误表示HTTP响应使用分块编码(chunked encoding)传输时未完成,导致客户端(如浏览器)接收的数据不完整。这通常由Nginx代理配置问题、后端服务异常或服务器资源限制引起。基于您提供的引用[^1][^2][^3][^4][^5],以下是针对接口请求的逐步解决方法。问题本质是响应数据传输中断,建议按顺序排查和修复。 #### 1. **检查并优化Nginx缓冲区配置** - 这是最常见的原因(引用[^4])。接口响应数据量过大时,Nginx默认缓冲区不足会导致传输中断。 - **操作步骤**: 1. 修改Nginx配置文件(通常为`nginx.conf`或站点配置文件)。 2. 在`http`或`server`块中添加以下配置,增加缓冲区大小: ```nginx proxy_buffer_size 1024k; # 单个缓冲区大小 proxy_buffers 16 1024k; # 缓冲区块数量和大小 proxy_busy_buffers_size 2048k; # 忙碌时缓冲区大小 proxy_temp_file_write_size 2048k; # 临时文件写入大小 ``` 3. 保存文件后,重启Nginx: ```bash nginx -s reload # 或使用 kill 和 ./nginx -c /path/to/nginx.conf 重启 ``` - **为什么有效**:增大缓冲区可容纳大型接口响应数据,避免分块编码中断[^4]。 #### 2. **检查服务器资源限制** - 磁盘空间耗尽或内存不足会导致数据传输失败(引用[^5])。 - **操作步骤**: 1. 检查磁盘使用率: ```bash df -h # 查看磁盘空间 ``` 2. 如果有Docker环境(如引用[^5]),清理Overlay2目录占用: ```bash docker system df # 查看Docker磁盘使用 docker ps -a # 列出所有容器 docker rm -f [container_id] # 移除问题容器 docker system prune -a # 清理无用资源 ``` 3. 检查内存和进程: ```bash free -h # 查看内存 top # 检查高负载进程 ``` - **为什么有效**:空间耗尽会中断数据写入,清理后恢复正常传输[^5]。 #### 3. **排查后端服务问题** - 后端服务崩溃或异常(如Java的IOException)可能导致响应中断(引用[^3])。 - **操作步骤**: 1. 查看后端日志,寻找错误如`Connection reset by peer`或`IOException`: ```bash journalctl -u [service_name] # 或查看应用日志文件 ``` 2. 确保后端服务稳定: - 重启后端应用。 - 检查接口响应代码,确认数据是否过大(如返回大量JSON)。 3. 如果使用代理超时,增加Nginx超时设置: ```nginx proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; ``` - **为什么有效**:后端异常会中断数据生成,修复后确保响应完整性[^3]。 #### 4. **验证和测试** - 应用更改后,测试接口请求: - 使用`curl -I [url]`检查响应头,确认`Transfer-Encoding: chunked`正常。 - 在浏览器或Postman中模拟请求,观察错误是否消失。 - 监控工具:使用`nginx -T`验证配置,或`tail -f /var/log/nginx/error.log`实时查看错误。 #### 常见原因总结 | 原因 | 优先级 | 检查点 | |------|--------|--------| | Nginx缓冲区不足 | 高 | `proxy_buffer_size`配置[^4] | | 磁盘空间耗尽 | 高 | `df -h`和Docker清理[^5] | | 后端服务异常 | 中 | 日志中的IO错误[^3] | | 网络或代理超时 | 中 | `proxy_read_timeout`设置[^1] | 本解决方案综合了引用中的核心方法,优先处理高频原因(如缓冲区配置和资源限制)。如果问题持续,建议结合服务器监控(如Prometheus)深入分析系统资源[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图幺陆零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值