语 法:client_body_temp_path path [level1 [level2 [level3]]];
默认值:client_body_temp_path client_body_temp;
上下文:http, server, location
设置用于存储包含客户端请求正文的临时文件的目录,指定的目录下最多可以使用三级子目录层次结构。例如:在以下配置中
client_body_temp_path /spool/nginx/client_temp 1 2;
临时文件的路径可能如下所示:
/spool/nginx/client_temp/7/45/00000123457
上面配置中,level1 为 7,level2 为 45,00000123457 为文件名称。
client_body_temp_path 指令后面的 level1、level2 和 level3 是什么意思?
如果将所有上传的文件都放在一个文件夹下,不仅很容易文件名冲突,并且容易导致一个文件夹特别大。所以有必要创建子目录,这里的 level1、level2 和 level3 如果有值就代表存在一级,二级,三级子目录。
目录名是由数字进行命名的,所以这里的具体的值就是代表目录名的数字位数。
注意:通过大量的测试得知,level1、level2 和 level3 值之和不能大于 10。例如:3 3 4 表示 level1 目录使用三个数字,level2 目录使用 3 个数字,level3 目录使用 4 个数字。
(1)nginx.conf 配置如下:
# 配置工作进程数量 worker_processes 1; events { # 设置工作进程可以同时打开的最大连接数 worker_connections 1024; } http { # 引用 MIME 类型 include mime.types; default_type application/octet-stream; server { # 监听 80 端口 listen 80; # 设置虚拟服务器的名称 server_name localhost; # 设置用于存储包含客户端请求正文的临时文件的目录 client_body_temp_path D:/server/nginx-1.20.1/temp/data 3 3 4; client_body_in_file_only on; location / { # 启用或禁用在与代理HTTPS服务器建立连接时通过TLS服务器名称 # 指示扩展(SNI、RFC 6066)传递服务器名称 proxy_ssl_server_name on; # 设置代理服务请求头字段 # X-Real-IP 真实发出请求的客户端IP proxy_set_header X-Real-IP $remote_addr; # X-Forwarded-For 记录着从客户端发起请求后访问过的每一个 IP 地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 确定客户端与代理服务器或者负载均衡服务器之间的连接所采用的传输协议(HTTP 或 HTTPS) proxy_set_header X-Forwarded-Proto $scheme; # HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术 proxy_set_header Host $host; # 将请求转发到 http://localhost:8080 地址 proxy_pass http://localhost:8080/; } } }
(2)发起 POST 请求后,缓存目录结构如下图: