Nginx上传文件大小配置
Nginx上传文件大小配置
一、相关参数详解:
client_max_body_size:允许大小限制
client_body_buffer_size:分配给请求数据的Buffer大小,如果HTTP 包体大小超过这个值,将会写缓存文件
client_body_temp :临时文件路径,默认该路径值是/tmp/ ,需要配置nginx用户组读写权限
规则:
1、小于client_body_buffer_size直接在内存中存储
2、大于client_body_buffer_size小于client_max_body_size,在临时文件中存储
二、报错实例
1、nginx报错报错 413 Request Entity Too Large,原因是请求的正文数据大于nginx 的client_max_body_size配置(默认1m)
问题分析:
上传文件大小大于Nginx 参数client_max_body_size 设置的值,将client_max_body_size 参数值设置为合理大小即可
2、小文件可以成功,但大文件就报错500错误,Nginx 日志:
open() "/opt/soft/nginx/temp/client_body_temp/0000000059" failed (13: Permission denied)
问题分析:
导致这个文件主要是文件目录权限问题,系统的umask值为027导致安装Nginx 的时候用root创建父目录权限为750,nginx的work进程为非root,上传小于client_body_buffer_size 参数设置的值时,不写缓存文件,所以不会出现目录文件权限问题,但文件大于client_body_buffer_size参数设置的值时,nginx 就会写缓存文件,缓存文件的父目录权限为750,且属组属者都为root ,所以就出现目录文件权限问题,给父目录赋权限即可。如:chom 755 /xxx/xxx
如果 client_max_body_size和client_body_buffer_size设置相同的值,这样就不会存储临时文件,直接存储在内存了,提高效率,但如果文件非常大,会非常耗内存。