client_body_temp目录

关于client_body_temp目录的作用,简单说就是如果客户端POST一个比较大的文件,长度超过了nginx缓冲区的大小,需要把这个文件的部分或者全部内容暂存到client_body_temp目录下的临时文件。


其实这样的处理流程也是无可厚非的,遇到body比较小,刚好header缓冲区又能够放得下,不用白不用,是不是?

最后,整理一下出现这个问题需要的条件。值得注意的是,目前各种版本的nginx都有这个现象(0.7.68、0.8.54、1.0.2都有) 
1) client_body_temp设置为不可访问,使得没有权限写临时文件
2) client_body_buffer_size使用默认设置,8k或者16k
3) client_header_buffer_size设置得比较大


这里的client_body_temp_path是制定post上传的$_FILES上传的文件地址

后面的level1,2,3是什么意思?

因为如果所有上传的文件都放在一个文件夹下,不仅很容易文件名冲突,并且容易导致一个文件夹特别大。

所以有必要创建子目录

这里的level1,2,3如果有值就代表存在一级,二级,三级子目录。

目录名是由数字进行命名的,所以这里的具体的值就是代表目录名的数字位数

比如

client_body_temp_path  /spool/nginx/client_temp 3 2;
可能创建的文件路径为
/spool/nginx/client_temp/702/45/00000123457


你可能感兴趣的:(client_body_temp目录)