最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
NGINXtcp_nopushon指令用法
时间:2026-07-20 17:33:05 编辑:袖梨 来源:一聚教程网
是 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; | 每产生一点数据就立即发送,可能产生大量小数据包 |
典型配置场景
http { sendfile on; # 使用内核态零拷贝发送静态文件 tcp_nopush on; # 防止 sendfile 产生大量小数据包 tcp_nodelay on; # 对动态内容/实时数据立即发送(与 tcp_nopush 不冲突) # 静态文件服务 server { location /static/ { # 这里 sendfile + tcp_nopush 配合效果最好 } }}工作原理
tcp_nopush on 时: 数据 ──→ 缓冲区累积 ──→ 凑满一个 MSS (最大报文段) ──→ 一次性发送 (减少包头开销,提高吞吐量)tcp_nopush off 时: 数据 ──→ 立即发送 ──→ 可能产生大量小包 ──→ 网络效率低
注意事项
- 仅对 sendfile on 有效:如果 sendfile off,tcp_nopush 无实际作用
- 与 tcp_nodelay 共存:两者不冲突。tcp_nopush 用于静态文件传输优化;tcp_nodelay 用于动态内容/实时连接(如 WebSocket),确保低延迟
- 默认关闭:需要显式开启
你的配置 tcp_nopush on; 是 推荐的标准做法,特别是在高并发静态文件服务场景下。