NGINX tcp_nopush on;
2026/7/14 17:40:15 网站建设 项目流程

是 NGINX 配置中tcp_nopush指令的用法。

tcp_nopush on;的作用

tcp_nopush是 Linux 系统下的 TCP 选项(TCP_CORK),在 NGINX 中配合sendfile使用:

表格

配置组合效果
sendfile on;+tcp_nopush on;开启 sendfile 后,数据不会立即发送,而是累积到一个完整的数据包后再发送,减少网络包数量
sendfile on;+tcp_nopush off;每产生一点数据就立即发送,可能产生大量小数据包

典型配置场景

nginx

http { sendfile on; # 使用内核态零拷贝发送静态文件 tcp_nopush on; # 防止 sendfile 产生大量小数据包 tcp_nodelay on; # 对动态内容/实时数据立即发送(与 tcp_nopush 不冲突) # 静态文件服务 server { location /static/ { # 这里 sendfile + tcp_nopush 配合效果最好 } } }

工作原理

plain

tcp_nopush on 时: 数据 ──→ 缓冲区累积 ──→ 凑满一个 MSS (最大报文段) ──→ 一次性发送 (减少包头开销,提高吞吐量) tcp_nopush off 时: 数据 ──→ 立即发送 ──→ 可能产生大量小包 ──→ 网络效率低

注意事项

  • 仅对sendfile on有效:如果sendfile offtcp_nopush无实际作用

  • tcp_nodelay共存:两者不冲突。tcp_nopush用于静态文件传输优化;tcp_nodelay用于动态内容/实时连接(如 WebSocket),确保低延迟

  • 默认关闭:需要显式开启

你的配置tcp_nopush on;推荐的标准做法,特别是在高并发静态文件服务场景下。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询