Nginx 的 scgi_temp 目录用于暂存 SCGI 协议通信中超出内存缓冲的临时响应数据,仅在启用 scgi_pass 且响应过大时写入,由 worker 进程自动管理生命周期,正常请求结束即清理;安全清理需先确认路径与占用状态,再用 find 按访问时间删除闲置文件,保留目录结构,禁止 rm -rf 全删或混用路径。

Nginx 的 scgi_temp 目录用于暂存 SCGI 协议通信中的临时响应数据,仅在启用 scgi_pass 且响应超出内存缓冲时才会写入文件。它和 proxy_temp、fastcgi_temp 类似,由 worker 进程自动管理生命周期,正常情况下请求结束即清理。安全清理的关键不是“全删”,而是“只清闲置、不碰运行中、不破坏结构”。
确认 scgi_temp 的实际路径和使用状态
先查配置中是否显式定义了该路径:
nginx -t -c /etc/nginx/nginx.conf 2>&1 | grep -i "scgi_temp_path"
若未配置,默认路径为安装目录下的 scgi_temp/(如 /usr/local/nginx/scgi_temp),但更常见的是在 http 或 server 块中自定义,例如:
scgi_temp_path /var/cache/nginx/scgi_temp 1 2;
再检查是否有文件正被占用:
lsof +D /var/cache/nginx/scgi_temp 2>/dev/null | grep -q nginx && echo "有活跃文件" || echo "无占用,可清理空闲项"
只清理长时间未访问的临时文件
保留目录结构和当前正在使用的文件,用 find 按访问时间(-amin)筛选删除:
- 删除 120 分钟以上未访问的文件(适合多数业务):
find /var/cache/nginx/scgi_temp -type f -amin +120 -delete
- 若需预览匹配项,先运行:
find /var/cache/nginx/scgi_temp -type f -amin +120 -print
配合定时任务与权限防护
写入 crontab(例如每天凌晨 3 点执行):
0 3 * * * find /var/cache/nginx/scgi_temp -type f -amin +120 -delete 2>/dev/null
确保执行用户(如 www-data 或 nginx)对目录有读写权限,但禁止对该目录设置 777 或开放给 untrusted 用户。目录本身权限建议为 700,属主为 nginx worker 用户。
不要做的几件事
- 不要
rm -rf /var/cache/nginx/scgi_temp—— 会删掉子目录层级(1/,2/等),而 Nginx 启动时依赖这些结构分片存储; - 不要在高并发或长连接(如 SSI、流式 SCGI 响应)期间强制清空整个目录;
- 不要将
scgi_temp_path和proxy_temp_path指向同一物理路径,否则清理时可能误伤其他模块临时文件。


















