nginx net::ERR_CONTENT_LENGTH_MISMATCH

博客讨论了HTTP响应中Content-Length与实际内容大小不符的问题,通常由服务器端断开连接引起。作者通过Wireshark抓包定位问题,并发现是虚拟服务器重启后,Nginx临时文件夹权限问题。文章详细阐述了Nginx的buffer机制,包括proxy_buffers、proxy_temp_file等配置,解释了如何在启用和禁用buffer情况下处理响应。解决方案是检查并修复Nginx临时文件夹权限。

错误提示

错误直译过来是内容长度不匹配,就是http response header中的content-length与实际接收的内容大小不一致导致。

排查过程

百度了很多,大多数是因为nginx的临时文件夹没有权限导致;通过wireshark抓包,看到是服务器端断开连接;最后想到最近虚拟服务器故障过,重启后,可能临时文件夹没有写入权限导致,最终确认是这个情况。但有必要了解一下nginx buffer机制

nginx buffer

proxy_buffers和proxy_temp_file

  • 如果启用了buffer,nginx会尽可能的从proxied server读取response,将response保存到buffer(proxy_buffer_size and proxy_buffers ),如果buffer不够,则会写入磁盘的temporary file(proxy_max_temp_file_size and proxy_temp_file_write_size),然后再传给客户端;
    • 默认的,临时文件夹在nginx_home/temp/proxy_temp
    • proxy_buffer_size,用来存储收到的response 的第一部分,通常是response header
    • proxy_buffering,指定了缓存数量和大小。
  • 如果禁用buffer,只要nginx收到response,就会同步传给客户端;nginx不会尝试读取整个response,能读取的response大小由proxy_buffer_size 决定;

禁用buffer

proxy_buffering  off;

参考

Express and nginx net::ERR_CONTENT_LENGTH_MISMATCH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值