“Connection reset by peer”不是 Nginx 自身故障,而是对端主动发送 TCP RST 包强制断连,需结合日志上下文(upstream/client关键词)定位方向,再抓包确认源IP,重点排查后端崩溃、超时配置不匹配、资源耗尽、协议违规或中间设备空闲断连。

“Connection reset by peer”不是 Nginx 自身故障,而是它在收发数据过程中,对端(客户端、上游服务或中间网络设备)主动发送 TCP RST 包强制断开连接。该错误出现在 error.log 中,说明连接已建立,但通信中途被硬中断。
上游服务主动重置连接
这是最常见的原因。Nginx 正从后端读取响应头或响应体时,后端进程突然终止或关闭连接:
- 后端崩溃或被系统 OOM Killer 杀死(查 dmesg | grep -i "killed process")
- 后端空闲超时比 Nginx 短(如 Tomcat
connectionTimeout=30s,而 Nginx 复用长连接) - 后端资源耗尽:文件描述符满(lsof -p PID | wc -l 超过 ulimit -n)、accept 队列溢出(
acceptCount或 Go 默认 backlog 过小) - 响应协议违规:缺失 HTTP 状态行、
Content-Length与实际响应体长度不符、响应头过大(超出 TomcatmaxHttpHeaderSize等限制) - Unix socket 权限错误或 socket 文件被删除(Nginx worker 用户无法访问)
客户端侧异常中断
请求尚未完成,客户端就断开了连接:
- 用户关闭浏览器、移动端切换网络(Wi-Fi ⇄ 4G)、小程序退后台
- 前端 AJAX 请求未调用
abort(),页面跳转或刷新导致连接中断 - 爬虫或测试工具主动终止连接(如 curl 超时退出、压测脚本逻辑错误)
- 客户端网络不稳定(高丢包、NAT 超时、防火墙拦截)
中间网络设备干预
连接链路中存在代理、SLB、WAF 或防火墙,在空闲时段主动清理连接:
- 云厂商负载均衡器默认空闲超时为 60–300 秒,与 Nginx 或后端 keepalive 不一致
- 企业级防火墙启用 conntrack 会话超时策略,长连接被强制踢出
- 运营商 NAT 设备或家庭路由器对 TCP 连接做短时回收
- 错误表现为:固定时间间隔集中报错、后端无对应异常日志、多请求共用同一连接后突现 RST
Nginx 自身配置触发级联中断
Nginx 不发 RST,但不当配置会加剧问题或引发下游 RST:
-
proxy_read_timeout设置过短,Nginx 主动断连后端,而后端仍在写响应 → 后端 write 失败触发 RST - 未启用 upstream keepalive(如
keepalive 32),高频建连加重后端连接压力,易触发 backlog 溢出 -
client_header_buffer_size或client_max_body_size过小,大请求头/体被截断,部分中间件直接 RST 而非返回 413 -
keepalive_timeout过短(如设为 5s),客户端复用连接时遭遇 Nginx 已 close 的 socket,收到 RST


















