Nginx
| Nginx | |
|---|---|
| 中文名 | Nginx |
| 英文名 | Nginx |
| 其他名称 | engine x |
| 开发者 | Igor Sysoev[1],F5, Inc.[2] |
| 首次发布 | 2004年10月4日[3] |
| 编程语言 | C[1] |
| 操作系统 | 跨平台[1] |
| 类型 | Web服务器、反向代理、负载均衡器 |
| 许可证 | BSD类许可证[3] |
| 网站 | nginx.org |
Nginx(读作“engine x”)是一款高性能的开源Web服务器软件,同时也可作为反向代理服务器、负载均衡器和HTTP缓存工具使用[3]。其最初由俄罗斯工程师Igor Sysoev为解决C10k问题(即同时处理一万个并发连接的难题)而开发,旨在满足当时俄罗斯高流量网站Rambler.ru的访问需求[4][2]。Nginx以其事件驱动的异步非阻塞架构闻名,在高并发场景下能够保持低内存占用和高稳定性,已成为驱动全球互联网流量的核心基础设施之一[5]。
Nginx的开发工作始于2002年,由Igor Sysoev在业余时间进行。2004年10月4日,第一个公开版本0.1.0正式发布,源代码以类BSD许可证的形式开放[3]。早期版本主要专注于解决Web服务器的C10k问题,即如何高效处理大量并发连接[6]。到2008年9月,Nginx已为Rambler搜索门户每日处理超过5亿个请求[6]。
2011年,Igor Sysoev与美国企业家Gus Robertson共同创立了Nginx公司(Nginx, Inc.),为企业用户提供商业支持和商业版本Nginx Plus[3]。2019年3月,应用交付网络巨头F5, Inc.以约6.7亿美元的价格收购了Nginx公司[2],这一收购旨在将Nginx的软件负载均衡能力与F5的硬件产品线整合,以增强其在多云应用服务领域的竞争力。
作为Web服务器,Nginx在处理静态文件(如HTML、图片、CSS和JavaScript)方面性能尤为突出,被证明比传统的Apache服务器快三倍以上[7]。通过sendfile等系统调用优化,Nginx能零拷贝地将文件从磁盘发送到网络套接字,极大地提高了静态内容的交付效率。
Nginx可作为反向代理服务器,接收客户端请求并将其转发至一个或多个后端服务器[8]。在反向代理模式下,Nginx支持多种负载均衡算法,包括:
- **轮询(Round Robin)**:按顺序将请求分发到后端服务器。
- **权重(Weight)**:为性能更强的服务器分配更高权重,使其处理更多请求。
- **IP哈希(IP Hash)**:确保来自同一客户端的请求始终被发送到同一台后端服务器,用于会话保持。
Nginx具备强大的缓存功能,能够缓存后端服务器(如Apache或Tomcat)生成的动态内容[8]。通过配置缓存键和过期策略,Nginx可以大幅减轻后端应用服务器的压力,显著提升用户端的响应速度。
Nginx采用**master-worker**多进程架构[9]。master进程负责读取配置、绑定端口和监控worker进程;worker进程则基于epoll(Linux)或kqueue(BSD系统)等事件驱动模型,每个worker可以异步处理数千甚至数万个并发连接。这种事件驱动的异步非阻塞模型是Nginx能够高效处理高并发请求的关键[9]。
Nginx的核心功能非常精简,大部分功能是通过模块(Modules)来扩展的。从1.9.11版本(2015年底)开始,Nginx官方支持动态模块加载(load_module指令)[10],允许在不重新编译整个二进制文件的情况下添加或更新第三方模块。
Nginx开源版本分为两个分支:
- **Mainline version (主线版本)**:包含最新功能和改进,但可能含有尚未完全稳定的新代码。
- **Stable version (稳定版本)**:基于主线版本分支出来,经过更充分的测试,适用于生产环境。
Nginx Plus是F5提供的商业版本,在开源版本基础上增加了额外的企业级功能,包括:
- 高级负载均衡算法(如最少连接数、一致性哈希)。
- 健康检查和主动监控。
- 基于JSON的实时监控仪表板(live activity monitoring dashboard)。
- 针对Kubernetes和微服务架构的强化支持。
OpenResty是一个基于Nginx与LuaJIT的Web平台,由中国的章亦春(agentzh)创建并维护[11]。它将大量Lua库集成到Nginx中,使开发者能够直接在Nginx内部使用Lua脚本编写业务逻辑,极大地扩展了Nginx的可编程性。
Nginx是全球市场份额最大的Web服务器之一。根据Netcraft在2023年的Web服务器调查,Nginx以38.88%的市场份额位列第一,显著领先于Apache的27.02%和Microsoft-IIS的9.99%[12]。另一家分析机构W3Techs的统计数据则显示Nginx的市场份额约为34%,同样位居榜首[13]。
- ↑ 1.0 1.1 1.2 Nginx官网
- ↑ 2.0 2.1 2.2 Nginx: EPFL Graph Search
- ↑ 3.0 3.1 3.2 3.3 3.4 Nginx基本介绍
- ↑ Web服务器 Nginx
- ↑ NGINX完全手册
- ↑ 6.0 6.1 Nginx History
- ↑ Nginx和Apache区别
- ↑ 8.0 8.1 NGINX技术全解析
- ↑ 9.0 9.1 Nginx进阶指南
- ↑ Nginx架构设计进化
- ↑ OpenResty简介
- ↑ April 2023 Web Server Survey
- ↑ Historical quarterly trends in usage statistics of web servers