nginx的临时文件目录介绍

分享于:2020-12-28 11:09:13

client_body_temp_path


L3Byb3h5L2h0dHBzL2ltYWdlczAuY25ibG9ncy5jb20vYmxvZy8xMzYxODgvMjAxMzA3LzEyMjI0NzE1LWNhMWUwYzBlNTdiMDRkZDY4NzFlODJlODQ4YjA2YzkzLnBuZw==.jpg


为存储承载客户端请求正文的临时文件定义存储目录。在指定目录下可支持高达3层子目录结构。例如,下面的配置: 

client_body_temp_path /spool/nginx/client_temp 1 2; 

临时文件的路径可能是下面的情况: 

/spool/nginx/client_temp/7/45/00000123457


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

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

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


proxy-temp-path


同上


为存储承载从代理服务器接收到的数据的临时文件定义目录。指定目录下支持3级子目录结构:

proxy_temp_path /spool/nginx/proxy_temp 1 2;1

临时文件路径可能像这样:

/spool/nginx/proxy_temp/7/45/000001234571

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

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


nginx 出现 13: Permission denied


fastcgi-temp-path


同上


指令指定存储从别的服务器传送来的数据临时文件路径,同样可以指定三级目录已经哈希存储,level的值指定为哈希设置多少标记,例如,在下列配置中:

fastcgi_temp_path  /spool/nginx/fastcgi_temp 1 2;

临时文件类似如下:

/spool/nginx/fastcgi_temp/7/45/00000123457


有个问题重点强调下:


nginx同FastCGI协同工作,FastCGI其实多是php-fpm。nginx的工作用户需要和PHP的工作用户设置一样的,(nginx.conf user配置、www.conf user配置),不然就会出现fastcgi_temp权限的问题。


open() "/var/temp/nginx/fastcgi/2/44/0000001442" failed (13: Permission denied) while reading upstream
mkdir() "/var/temp/nginx/fastcgi/4/44" failed (13: Permission denied) while reading upstream


可能是php用户创建了临时文件,nginx用户读不了,反正挺麻烦的,不如设置一样的用户省心。

一般情况下是不容易出问题了,在什么情况下会出问题?PHP输出的数据过大时,就得借助缓存目录fastcgi_temp,这时就可能会因目录权限的问题,客户端读取不到PHP产生的数据。


uwsgi_temp_path


定义用于存储具有从uwsgi服务器接收的数据的临时文件的目录。 最多可以在指定目录下使用三级子目录层次结构。 例如,在以下配置中

uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;

一个临时文件可能如下所示:

/spool/nginx/uwsgi_temp/7/45/00000123457

另请参见uwsgi_cache_path指令的use_temp_path参数。


scgi-temp-path


设定scgi临时目录,同上。