核心是按场景精准控制:静态大文件(如视频、安装包)必须设proxy_buffering off以实现流式透传、降低首字节延迟;仅在需改写响应头或gzip压缩时才开启,并同步调大proxy_buffers与proxy_busy_buffers_size、延长超时、优化临时文件参数。

核心是让缓冲区匹配大文件的传输节奏:该缓存时留足空间,该直传时彻底关闭,不能一刀切。
区分场景决定 proxy_buffering 开关
静态大文件(如安装包、视频)直接关闭缓冲,避免首字节延迟和内存积压:
- proxy_buffering off; —— 让数据边收边发,降低延迟
- 仅在需要改写响应头、做 gzip 压缩或统一添加 header 时才开启,且必须同步调大缓冲区
调大 proxy_buffers 与 proxy_busy_buffers_size
两者必须协同设置,否则会卡在“收着发着就堵住”的状态:
- proxy_buffers 8 128k; —— 总内存 1MB,适合 100MB–1GB 常见文件
- proxy_busy_buffers_size 256k; —— 设为单 buffer 大小的 2 倍,保障发送中仍有足够缓冲接收新数据
- 若用
16 256k,则proxy_busy_buffers_size推荐设为512k或1m
控制临时文件行为,避开磁盘瓶颈
一旦缓冲溢出写磁盘,吞吐量断崖下跌。关键不是禁用,而是管好它:
- proxy_max_temp_file_size 1024m; —— 允许单个临时文件最大 1GB,覆盖多数大文件场景
- proxy_temp_file_write_size 256k; —— 减少小块写盘次数,提升 I/O 效率
- 确保
proxy_temp_path挂载在 SSD,并预留足够空间和 inode
配套超时与协议参数必须延长并匹配
缓冲再大,超时一到就中断,前功尽弃:
- proxy_read_timeout 3600; 和 proxy_send_timeout 3600; —— 按最大文件大小 + 最低带宽估算(如 5GB / 1MB/s = 5000s,取整 7200)
- proxy_http_version 1.1; + proxy_set_header Connection ''; —— 启用长连接,防中间设备断连
- 后端支持 keepalive 时,在 upstream 块中配置
keepalive 32;


















