proxy_temp_path用于指定Nginx代理时临时存放上游响应体的目录,需配合proxy_buffering on及缓冲指令生效;语法为proxy_temp_path path [level1 [level2 [level3]]],须用静态绝对路径,常配两级散列目录提升性能。

在 Nginx 中,proxy_temp_path 用于指定代理请求过程中临时存放上游响应体的目录(比如大文件转发、缓冲未读取完的响应数据时),它必须配合 proxy_buffering on 和相关缓冲指令(如 proxy_buffers、proxy_busy_buffers_size)一起生效。默认路径通常是 /var/cache/nginx/proxy_temp,但生产环境常需自定义位置以避免系统盘写满或提升 I/O 性能。
配置 proxy_temp_path 的基本语法
proxy_temp_path 必须放在 http、server 或 location 块中,但通常建议在 http 块全局设置。它的格式为:
proxy_temp_path path [level1 [level2 [level3]]];
其中:
- path 是根目录,Nginx 会自动创建,要求 worker 进程有读写权限;
-
level1/level2/level3 是子目录层级(最多三级),每级用 1–2 位十六进制数命名(如
0、ab),用于分散文件、避免单目录下文件过多影响性能; - 不指定 level 时,默认为
proxy_temp_path /path 1 2(即一级 1 位、二级 2 位)。
实际配置示例
例如将临时文件存到 /data/nginx/proxy_temp,并按两级目录散列(如 /data/nginx/proxy_temp/a/1b/xxx):
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
http {
proxy_temp_path /data/nginx/proxy_temp 1 2;
# 其他 proxy 相关配置...
}
注意:proxy_temp_path 不支持变量(如 $host),路径必须是静态绝对路径。
配套注意事项和常见问题
仅设置 proxy_temp_path 不足以让临时文件真正落地,还需确保:
-
proxy_buffering on;(默认开启,但显式声明更稳妥); - 响应体大小超过
proxy_buffer_size + proxy_buffers总和时,才会写入proxy_temp_path; - 磁盘空间足够,且目录属主为运行 Nginx worker 的用户(如
www-data或nginx); - 若使用
proxy_cache,proxy_temp_path和proxy_cache_path应分开配置,二者用途不同(前者是临时缓冲,后者是持久缓存)。
验证与排查方法
配置后重载 Nginx(nginx -s reload),可检查:
- 目录是否已创建(Nginx 启动或首次用到时自动建);
- 用
lsof -p $(cat /var/run/nginx.pid) | grep proxy_temp查看是否有临时文件被打开; - 通过大响应体请求(如下载一个 >1MB 的文件)并观察该目录下是否生成类似
0000000001的临时文件。

















