优化 nginx client_body_buffer_size 以用于接受文件上传的 Web 应用

优化 nginx client_body_buffer_size 以用于接受文件上传的 Web 应用

配置nginx的时候,有哪些注意事项会影响client_body_buffer_size

我把它设置10m为一个用户可以上传照片和图片表情包的网站(有点像9gag)。请注意,也client_max_body_size设置为10m。总的来说,我的理由是,Web 服务器应该接受图像大小不超过 10MB 的 POST 请求(网站政策)——因此这两个指令都应该是10m

这个推理正确吗?

有人可以解释一下影响设置的值的因素client_body_buffer_size以及的典型值client_body_buffer_size(对于我所描述的那种 Web 应用程序)吗?

如果有必要,我会使用 nginx 作为反向代理。

答案1

文档说明了什么client_body_buffer_size

设置读取客户端请求主体的缓冲区大小。如果请求主体大于缓冲区,则将整个主体或仅其部分写入临时文件。默认情况下,缓冲区大小等于两个内存页。在 x86、其他 32 位平台和 x86-64 上为 8K。在其他 64 位平台上通常为 16K。

此内存仅在上传请求时使用;一旦请求被传递到后端,内存就会再次释放。如果请求大于此值,它将转到临时文件并将出现警告在错误日志中。

这意味着您必须有足够的 RAM 来存储任何同时上传的内容,否则您的服务器将开始交换。

这对性能的影响可能不会那么大,除非您的内存受到严重限制并且同时进行大量上传。

相关内容