Nginx 做代理服务器时浏览器加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH 的解决方案

当使用Nginx作为代理服务器时,浏览器(例如Chrome)在尝试加载大文件时出现ERR_CONTENT_LENGTH_MISMATCH错误。这个问题可以通过检查Nginx配置并重启服务来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx 做反向代理,后端是 tomcat,chrome 浏览器访问项目时加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH:
ERR_CONTENT_LENGTH_MISMATCH

查看 linux 日志:
2015/05/27 02:19:10 [crit] 29263#0: *72 open() "/usr/local/nginx/proxy_temp/3/00/0000000003" failed (13: Permission denied) while reading upstream, client: 192.168.1.30, server: localhost, request: "GET /项目名/frame/js/jquery-1.10.1.min.js HTTP/1.1", upstream: "http://192.168.1.177:8080/项目名/frame/js/jquery-1.10.1.min.js", host: "192.168.1.177", referrer: "https://192.168.1.177/项目名/"
2015/05/27 02:19:10 [crit] 29263#0: *77 open() "/usr/local/nginx/
### 修改 Nginx 配置 对于 `net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)` 错误,一种有效的解决办法是在 Nginx 的配置文件中调整缓冲区设置。具体来说,在 http 块内增加如下几行配置: ```nginx proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 128k; ``` 这些参数的作用分别是设定代理服务器与后端通信使用的单个缓存大小、定义多少个这样的缓存以及当繁忙允许的最大未写入数据量[^3]。 ### 调整响应头中的Content-Length字段 另一个可能的原因在于客户端请求的是部分内容(通过 Range 请求),而服务器返回的内容长度不匹配实际传输的数据量。这可能是由于某些情况下资源被部分加载或中断所引起的。为了防止这种情况发生,可以尝试禁用范围请求功能,即移除 HTTP 头部中的 Accept-Ranges 字段或将它的值设为空字符串。可以通过编辑 Web 应用程序的代码来实现这一点;如果是使用 Nginx,则可以在 location 或 server 段落里加上下面这条指令: ```nginx add_header 'Accept-Ranges' 'none'; ``` 这样会使得浏览器不再发送带有 range 的 GET 请求,从而避免因分片下载而导致的内容长度不符问题[^2]。 ### 清理并重新部署应用 有该错误也可能是因为构建过程中的某些异常造成的。因此建议清理项目的 node_modules 文件夹和 dist 输出目录后再执行一次完整的打包流程,并上传最新版本的应用至 Nginx 进行测试。确保所有静态资源都正确无误地被打包进了最终产物之中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值