proxy_max_temp_file_size 限制 Nginx 反向代理中单个响应临时文件的最大容量,仅在 proxy_buffering on、响应超内存缓冲、可缓存且非流式传输时生效;设小增 I/O,设大或为 0 易致磁盘满或断连。

proxy_max_temp_file_size 控制的是 Nginx 在反向代理过程中,单个响应临时文件能写多大——它不控制总磁盘用量,也不管缓存目录或日志,只管“一个文件最多写多少”。设小了会频繁切片、加重 I/O;设大了或为 0,又可能撑爆磁盘或直接断连。
它在什么情况下起作用
这个参数只在以下四个条件同时满足时才生效:
- 启用了
proxy_buffering on(默认开启) - 后端响应体超出内存缓冲总量(
proxy_buffer_size + proxy_buffers总和) - 响应未被标记为不可缓存(比如不含
Cache-Control: no-store,状态码不是 5xx) - 后端未使用流式传输(即没有
Transfer-Encoding: chunked,也没返回Connection: close)
满足这些,Nginx 才会把溢出部分写入磁盘临时文件;否则就走流式转发,不落盘。
它真正限制的是什么
它只限制单个临时文件的大小上限,不是:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- 整个
proxy_temp_path目录的总空间(那是系统磁盘的事) - 多个并发请求产生的所有临时文件加起来的大小
-
proxy_cache缓存所占磁盘(由proxy_cache_path max_size管) - 客户端上传的请求体(那是
client_body_temp_path和client_max_body_size的事)
例如设为 10m,一个 25MB 的响应不会被拒绝,而是拆成 3 个临时文件(10m+10m+5m);但若设为 0,Nginx 就不再写任何临时文件,而是直接中断或转为流式——前提是后端允许。
怎么设才合理
不能拍脑袋定值,得看三方面:
-
业务响应特征:如果后端常规返回 JSON 报表(平均 2MB)、偶尔有导出 Excel(最大 8MB),设
10m比较稳妥 -
磁盘余量:临时目录所在分区,空闲空间建议 ≥
proxy_max_temp_file_size × 并发峰值数 × 2(留冗余) -
存储介质性能:机械盘建议 ≤ 5m;NVMe SSD 可放宽到 20–50m;若用
/dev/shm内存文件系统,可设更高甚至 0(需配合足够内存缓冲)
必须同步调整的配套参数
单独改 proxy_max_temp_file_size 很容易出问题:
-
proxy_buffering on:必须保持开启,否则该参数无效 -
proxy_buffer_size 4k–16k:只存响应头,够用即可 -
proxy_buffers 8 128k或16 256k:确保常见响应能全进内存,减少落盘概率 -
proxy_busy_buffers_size:建议设为单块 buffer 大小的 2 倍,比如256k(对应8 128k) -
client_max_body_size:若也处理大上传,此值必须 ≥proxy_max_temp_file_size,否则请求在代理前就被拦截
不复杂但容易忽略。

















