将 proxy_temp_path 指向独立高性能磁盘(如 nvme ssd)并分层,可隔离 i/o 路径、降低系统盘竞争,显著减少大文件回源时的 i/o 延迟和 502/503 错误。

直接把 proxy_temp_path 指向一块独立、高性能的磁盘(如 NVMe SSD),并合理分层,就能把大文件回源时的临时写入压力从系统盘剥离,显著降低 I/O 竞争和响应延迟。
为什么跨磁盘分布能提升性能
默认情况下,Nginx 会把代理响应的临时文件写入编译指定路径(如 /var/cache/nginx/proxy_temp),该路径常与系统日志、应用数据共用同一块 SATA 盘或根分区。当 CDN 回源大量视频、安装包等大文件时,密集的小块随机写 + 同步刷盘极易打满磁盘 IOPS,引发超时、502 或 503。将 proxy_temp_path 显式挂载到另一块物理磁盘,本质是做 I/O 路径隔离——读写压力不再挤在单一设备上。
实操:配置专用磁盘路径并分层
确保目标磁盘已格式化并挂载(例如挂载点为 /mnt/ssd/nginx_temp),然后在 Nginx 的 http 块中配置:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- 使用绝对路径,并赋予 Nginx 工作进程(如
nginx或www-data)完整读写权限:proxy_temp_path /mnt/ssd/nginx_temp 1 2; -
1 2表示两级哈希子目录(如/a/1f/xxx.tmp),避免单目录下文件过多导致查找慢; - 挂载该磁盘时启用优化选项,例如:
mount -o noatime,nobarrier,defaults /dev/nvme0n1p1 /mnt/ssd(仅限业务允许丢弃部分元数据安全性的场景); - 预留足够空间:建议 ≥ 预估峰值并发 × 平均单文件大小 × 1.5,避免因空间不足触发 503。
配合禁用临时文件进一步减压
若回源链路稳定、客户端网络质量好,可绕过磁盘暂存,改走内存直通:
- 设
proxy_buffering off;关闭缓冲(适合 SSE、大文件下载等流式场景); - 或保留
proxy_buffering on;,但设proxy_max_temp_file_size 0;,强制超长响应边收边发,不落盘; - 同步调大内存缓冲:如
proxy_buffer_size 128k; proxy_buffers 16 256k;,覆盖常见响应头与前段正文; - 注意:此方式不适用于后端偶发卡顿或弱网客户端,否则易触发连接中断。
别忽略清理与监控
Nginx 不自动删除已发送完的临时文件,残留文件会悄悄占满空间:
- 添加定时清理脚本(如每小时执行):
find /mnt/ssd/nginx_temp -mmin +30 -name "*.tmp" -delete; - 监控关键指标:
iostat -x 1观察该磁盘的%util和await;df -h /mnt/ssd和df -i /mnt/ssd防止空间或 inode 耗尽; - 检查错误日志是否仍有
"writing to temporary file"提示,确认配置已生效。










