很多人认为,Nginx 反向代理能提升网站性能,主要靠 epoll 高并发模型。其实这只是基础能力,Go、Node.js、Netty 等同样具备优秀的并发 I/O 能力。Nginx 真正的价值,是将客户端网络 I/O 与后端业务处理解耦。
最典型的场景就是慢连接。假设后端 100 毫秒就生成了一个 10MB 响应,但用户网络很慢,需要 30 秒才能下载完成。如果后端直接面对客户端,业务虽然早已处理完成,连接仍可能长期被慢客户端占用。
Nginx 位于客户端和后端之间,可以通过响应缓冲尽快接收后端数据,再按照客户端的速度慢慢发送:
后端 → Nginx:快速传输
Nginx → 客户端:慢速传输
这样后端可以更快释放连接和相关资源,继续处理新的请求。类似地,请求缓冲也可以先由 Nginx 接收客户端上传的数据,上传完成后再转发给后端。用户中途断开时,后端甚至无需参与处理。
此外,Nginx 还能承担静态资源、TLS、压缩、缓存以及上游连接复用等网络层工作,减少应用服务器的额外负担。负载均衡则可以进一步分摊多台后端服务器的请求压力。
不过,Nginx 不是万能加速器。如果 SQL 查询本身需要 800 毫秒,或者业务代码存在性能瓶颈,前面增加再多代理也无法降低单次业务处理时间。
所以,Nginx 提升性能的核心,不是让后端计算更快,而是替后端处理连接和网络传输,让后端更快释放资源,把有限的 CPU、连接和内存投入真正的业务处理,从而提升整个系统的吞吐量和稳定性。