Nginx TCP调优需按资源类型协同配置tcp_nopush与tcp_nodelay:sendfile on时tcp_nopush生效,适合大文件吞吐;off时output_buffers起作用,适配预处理场景;二者可共存,前者攒包提吞吐,后者降延迟保首屏;须配套sendfile_max_chunk、access_log off及keepalive_timeout优化。
优化 Nginx 的 tcp_nopush 和 tcp_nodelay 不是简单开关组合,而是按资源类型、传输路径和业务目标做精准协同。关键前提是明确:这两个参数行为不同、生效条件不同、且必须与 sendfile 状态严格匹配。
这是所有 TCP 参数调优的起点:
tcp_nopush 才有效,output_buffers 完全不生效;此时重点是让内核攒够包再发tcp_nopush 失效,output_buffers 才起作用,适合需预处理(如 gzip)或大文件分片场景它们不是“二选一”,而是分阶段协作:
全局设置容易误伤,推荐在具体 location 块中差异化启用:
sendfile on; tcp_nopush on; tcp_nodelay off; ——专注吞吐,避免小包干扰tcp_nopush on; tcp_nodelay on; ——既减少首包延迟,又保障主体合并发送tcp_nodelay on; 即可,tcp_nopush 无意义,延迟可降 100–200ms单独调这两个参数收益有限,以下三项需同步落实: