proxy_max_temp_file_size 用于限制 nginx 开启 proxy_buffering 时单个临时文件的最大大小,单位可为 k/m/g,设为 0 则禁用临时文件;它不控制 proxy_cache 缓存大小,且仅在 proxy_buffering on 时生效。

proxy_max_temp_file_size 是 Nginx 在启用代理缓存(或响应体过大时自动写入磁盘)过程中,用于限制单个临时文件最大大小的指令。它**只在 proxy_buffering 开启且响应体超出内存缓冲区(proxy_buffer_size + proxy_buffers)时生效**,此时 Nginx 会把多余内容写入临时文件——这个指令就控制每个这样的临时文件能写多大。
什么时候需要设置它?
当后端返回超大响应(如大文件下载、导出报表、视频流片段),而你又开启了 proxy_buffering on(默认开启),Nginx 可能会生成多个临时文件暂存数据。若不加限制,单个临时文件可能无限增长,占满磁盘或引发 IO 压力。
注意:该指令**不影响 proxy_cache 缓存文件大小**,那是由 proxy_cache_path 的 max_size 和 inactive 控制的。
如何配置?
在 http、server 或 location 块中添加:
proxy_max_temp_file_size 100m;
可接受单位包括 k、m、g(不区分大小写),设为 0 表示禁用临时文件(即强制全部缓存在内存中,但超出缓冲区会直接报错 502 Bad Gateway)。
典型配合项:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- proxy_buffering on;(必须开启才触发临时文件逻辑)
- proxy_buffer_size 4k;(首行/响应头缓冲区)
- proxy_buffers 8 16k;(响应体主体缓冲区,共 128k)
- proxy_busy_buffers_size 32k;(忙时可使用的缓冲上限)
常见误区提醒
✅ 它不是限制整个响应大小,而是单个临时文件的大小;多个临时文件仍可并存。
✅ 修改后需 nginx -s reload 生效,无需重启。
❌ 不适用于 proxy_cache 场景下的缓存文件大小控制。
❌ 如果关闭了 proxy_buffering off,该指令完全不生效——响应会边收边转发,不落地、不生成临时文件。
调试与验证
开启 Nginx 错误日志 error_log /path/to/error.log debug; 后,可观察类似日志:
*1023456 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000001
再结合 df -h /var/cache/nginx 和 ls -lh /var/cache/nginx/proxy_temp/ 查看实际生成的临时文件大小,确认是否受控。










