Git Product home page Git Product logo

blog's Issues

【踩坑记录-Nginx】前端请求静态文件报错net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)

问题描述:

今天在更新系统的前端镜像后,打开网址发现报了个错误:main.xx.js net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)

解决办法:

通过排查大概定位到是由于js文件过大,导致Nginx中的代理缓存无法加载全部资源原因导致。

解决办法如下:
image

解释说明

  • proxy_buffering
Syntax:    proxy_buffering on | off;
Default:    proxy_buffering on;
Context:    http, server, location

该字段用于控制是否缓存代理服务器的返回。

如果为onNginx会将代理服务器返回的结果存放到缓冲区,再返回给客户端(边收边传,不是全部接收完再传给客户端)。缓存大小由proxy_buffersproxy_busy_buffers_size两个指令决定。如果缓存超出限制,一部分则会被写入到硬盘的临时文件中,临时文件由proxy_max_temp_file_sizeproxy_temp_file_write_size指令控制。

如果为offNginx会将返回结果立刻传递到客户端。如果返回结果过大,超过了Nginx中配置的proxy_buffer_size的值。Nginx将分批从代理服务器中读取返回结果,当读取的内容达到proxy_buffer_size值后,立刻返回给客户端,然后再从代理服务器获取剩余部分。

注意:如果该字段为offproxy_buffersproxy_busy_buffers_size这两个指令将会失效。 proxy_buffer_size 不受任何影响。开启状态时,需提防其缓存空间设置过大,内存被大量占用的情况发生。

  • proxy_buffer_size
Syntax:    proxy_buffer_size size;
Default:    proxy_buffer_size 4k|8k;
Context:    http, server, location

后端服务器的响应头会放到proxy_buffer_size当中,这个大小默认等于proxy_buffers当中的设置单个缓冲区的大小。

  • proxy_buffers
Syntax:    proxy_buffers number size;
Default:    proxy_buffers 8 4k|8k;
Context:    http, server, location

proxy_buffers的缓冲区大小一般会设置的比较大,以应付大网页。 proxy_buffers当中单个缓冲区的大小是由系统的内存页面大小决定的,Linux系统中一般为4k。 proxy_buffers由缓冲区数量和缓冲区大小组成的。总的大小为number*size。

若某些请求的响应过大,则超过proxy_buffers的部分将被缓冲到硬盘(缓冲目录由_temp_path指令指定), 当然这将会使读取响应的速度减慢, 影响用户体验. 可以使用proxy_max_temp_file_size指令关闭磁盘缓冲。

  • proxy_busy_buffers_size
Syntax:  proxy_busy_buffers_size size;
Default:  proxy_busy_buffers_size 8k\|16k;
Context:  http, server, location

proxy_busy_buffers_size不是独立的空间,他是proxy_buffersproxy_buffer_size的一部分。nginx会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxy_busy_buffers_size来控制的,建议为proxy_buffers中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就写到磁盘的临时文件中。

参考链接:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size

https://segmentfault.com/a/1190000015921504

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.