跳转到内容

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服务

[编辑 | 编辑源代码]

作为Web服务器,Nginx在处理静态文件(如HTML、图片、CSS和JavaScript)方面性能尤为突出,被证明比传统的Apache服务器快三倍以上[7]。通过sendfile等系统调用优化,Nginx能零拷贝地将文件从磁盘发送到网络套接字,极大地提高了静态内容的交付效率。

反向代理与负载均衡

[编辑 | 编辑源代码]

Nginx可作为反向代理服务器,接收客户端请求并将其转发至一个或多个后端服务器[8]。在反向代理模式下,Nginx支持多种负载均衡算法,包括:

  • **轮询(Round Robin)**:按顺序将请求分发到后端服务器。
  • **权重(Weight)**:为性能更强的服务器分配更高权重,使其处理更多请求。
  • **IP哈希(IP Hash)**:确保来自同一客户端的请求始终被发送到同一台后端服务器,用于会话保持。

HTTP缓存

[编辑 | 编辑源代码]

Nginx具备强大的缓存功能,能够缓存后端服务器(如ApacheTomcat)生成的动态内容[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(商业版本)

[编辑 | 编辑源代码]

Nginx Plus是F5提供的商业版本,在开源版本基础上增加了额外的企业级功能,包括:

  • 高级负载均衡算法(如最少连接数、一致性哈希)。
  • 健康检查和主动监控。
  • 基于JSON的实时监控仪表板(live activity monitoring dashboard)。
  • 针对Kubernetes和微服务架构的强化支持。

OpenResty(第三方分支)

[编辑 | 编辑源代码]

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]

参考文献

[编辑 | 编辑源代码]