Nginx 的 proxy_temp_path 必须在 http 块中显式配置绝对路径并设两级子目录,手动创建目录、赋权,且需与 proxy_buffering 和 proxy_cache_path 协同工作,确保同挂载点以避免跨设备错误。

Linux 下配置 Nginx 的 proxy_temp_path,核心是让代理响应中超出内存缓冲的部分安全、高效地落盘。它不负责缓存,只管“中转暂存”,必须显式配置,且不能省略任何关键环节。
必须在 http 块中定义绝对路径
proxy_temp_path 只能出现在 http{...} 作用域内,语法为:
proxy_temp_path /data/nginx/proxy_temp 1 2;
其中:
- 路径必须是绝对路径,如
/data/nginx/proxy_temp;相对路径、变量(如$HOME)或软链接均无效 -
1 2表示两级子目录结构,Nginx 会按哈希散列生成类似/data/nginx/proxy_temp/7/ab/xxx.tmp的路径,避免单目录文件过多拖慢 I/O - 不写层级参数(如只写
proxy_temp_path /data/nginx/proxy_temp;)会导致所有临时文件挤在根目录,高并发下易成性能瓶颈
目录需手动创建并赋予正确权限
Nginx 不会自动建目录,也不检查权限是否就绪。若跳过这步,启动时无报错,但运行中写临时文件会失败,表现为静默降级(如缓存失效、响应变慢、日志出现 Permission denied 或 Invalid cross-device link)。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
执行以下命令(用户组名请按实际 worker 进程身份调整,常见为 nginx 或 www-data):
mkdir -p /data/nginx/proxy_tempchown nginx:nginx /data/nginx/proxy_tempchmod 700 /data/nginx/proxy_temp
还需逐级检查父目录权限:ls -ld /data /data/nginx /data/nginx/proxy_temp,确保每一级对 worker 用户都有执行(x)权限。
要和 proxy_buffering、proxy_cache_path 协同生效
proxy_temp_path 不是独立工作的,它的触发依赖缓冲行为:
- 默认
proxy_buffering on;时,当响应头 + 响应体超过proxy_buffer_size + proxy_buffers总和,溢出部分才写入该路径 - 若设为
proxy_buffering off;,则该路径基本不被使用(响应直通,不暂存) - 启用缓存(
proxy_cache)且未命中时,Nginx 先把回源响应写入proxy_temp_path,再rename()到proxy_cache_path目录——因此二者必须在同一挂载点,否则会因跨设备报错导致缓存静默失效(X-Proxy-Cache: BYPASS);更稳妥的做法是在proxy_cache_path中加use_temp_path=off,跳过中转直接写缓存目录
建议搭配其他参数提升稳定性
仅配路径还不够,需同步优化相关缓冲策略:
- 增大单次写入量:设
proxy_temp_file_write_size 64k;(默认 32k),减少系统调用频次 - 限制单个临时文件上限:加
proxy_max_temp_file_size 2g;,防止单个大响应撑爆磁盘 - 为大流量场景预留空间:该路径所在磁盘建议挂 SSD,并预留 ≥ 单次最大响应体 × 并发连接数 × 1.5 的可用空间
- 避免 I/O 冲突:不要与
client_body_temp_path、fastcgi_temp_path等共用同一磁盘或目录

















