启用 tcp_nodelay 能抑制 Nagle 算法延迟,提升 React 首屏加载与实时交互性能;需在 server 块中配合 keepalive_timeout 使用,reload 即可生效。

React 项目通过 Nginx 部署时,默认 TCP 行为可能在小包高频交互(如 WebSocket、实时轮询、首屏资源加载)中引入毫秒级延迟。启用 tcp_nodelay 能有效抑制 Nagle 算法带来的累积延迟,尤其对低延迟敏感的前端交互有实际收益。
为什么 React 部署需要关注 tcp_nodelay?
React 应用常依赖大量小体积静态资源(JS chunk、JSON API 响应、SSE/WS 握手包),Nginx 作为反向代理或静态服务端,默认启用 Nagle 算法:等待数据填满 MSS 或收到 ACK 后才发包。这会导致首字节延迟(up to 200ms),影响 TTFB 和交互响应感。对 CSR 应用,首屏 JS 加载和 hydration 的链路延迟会更明显。
在 Nginx 中启用 tcp_nodelay 的位置
该指令仅对 keepalive 连接生效,需配合 keepalive_timeout 使用。它不作用于 upstream 连接(那是 proxy_buffering 和 proxy_http_version 控制的),而是控制 Nginx 与客户端之间 TCP 连接的发送行为。
- 放在
http、server或location块中均可,推荐在server块统一开启 - 必须搭配
keepalive_timeout(建议设为 60s 或更高)才能触发效果 - 无需重启 Nginx 全局服务,reload 即可生效:
nginx -s reload
典型 React 部署配置片段(含 tcp_nodelay)
以下为精简实用的 server 配置示例,适用于 create-react-app 或 Vite 构建产物:
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
server {
listen 80;
server_name example.com;
root /var/www/my-react-app/build;
index index.html;
<pre class="brush:php;toolbar:false;"># 启用 keepalive 并关闭 Nagle 算法
keepalive_timeout 60;
tcp_nodelay on;
# 支持前端路由(HTML5 History)
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存优化(可选但推荐)
location ~* \.(js|css|json|svg|png|jpg|jpeg|gif|ico|woff2?|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}}
验证是否生效
不能仅靠配置存在来判断,需实测确认:
- 使用
ss -i查看连接状态(Linux):连接建立后执行ss -i dst <client-ip></client-ip>,观察输出中是否有nodelay - Chrome DevTools → Network → 某个请求 → Headers → 查看
Connection是否为keep-alive,再结合 Wireshark 抓包比对 TCP 包间隔 - 对比开启前后关键资源(如 main.js)的 TTFB 变化,真实环境建议用 Lighthouse + WebPageTest 多次采样
不复杂但容易忽略 —— 一行 tcp_nodelay on 就能减少用户感知到的“卡顿”,尤其在弱网或高交互场景下效果更直观。

















