源本科技 | 码上会

Nginx 架构

2026/05/19
3
0

事件驱动 & 异步非阻塞

事件驱动的概念

事件驱动既是主流编程范式,也是 Nginx 实现异步非阻塞高并发的核心核心思想。传统同步阻塞 I/O 模型中,线程发起 I/O 请求后会陷入等待,直至数据就绪才继续执行,极大限制服务并发上限。

事件驱动模型则完全改变运行逻辑,线程发起 I/O 操作后可立刻返回,转而处理其他客户端请求,待操作系统完成 I/O 读写、触发对应事件后,再回调线程完成后续业务处理,大幅提升服务器并发吞吐量与响应效率。

实例:Nginx 接收 1 条客户端请求后,不会原地等待该请求数据传输完成,而是同步受理并处理其余新接入请求。

I/O 多路复用技术

I/O 多路复用能够让单个线程同时监听多个文件描述符,一旦任意描述符产生读写、连接等事件,即可精准捕获并处理,这也是 Nginx 实现单线程高并发的底层依托。Linux 系统主流三大多路复用接口特性如下:

  • select:适配少量并发连接,存在最大文件描述符数量限制,高并发场景性能较差

  • poll:功能逻辑与 select 一致,解除文件描述符数量限制,但海量连接下遍历效率偏低

  • epoll:Linux 专属高并发接口,专为海量连接场景设计,是当前 Nginx 默认优先选用的多路复用方案

实例:借助 epoll 机制,1 个工作线程可同时管控上万条并发网络连接。

epoll 核心特点

  • 纯事件驱动架构,主动订阅需要监听的文件描述符,仅在事件触发时执行处理逻辑

  • 支持水平触发 LT、边缘触发 ET 两种触发模式,LT 适配常规业务,ET 极致压榨高并发性能

  • 支持运行中动态新增、删减、修改监听对象,配置调整灵活

  • 底层采用红黑树存储监听描述符,检索与调度效率极高,仅唤醒产生事件的对应进程

  • 无硬性连接数量上限,理论可支撑数十万级并发连接

实例:业务服务器部署 epoll 架构后,并发连接数量持续上涨也不会出现性能断崖式下跌。

多进程机制

Nginx 采用经典的 Master + Worker 多进程运行架构,架构分层清晰、职责划分明确,兼顾管理便捷性与请求处理高效性。

Master 主进程

  • 解析加载 Nginx 配置文件,校验配置语法合法性

  • 根据预设数量批量创建、初始化 Worker 工作进程

  • 实时监控所有 Worker 进程运行状态,进程异常退出时自动重启恢复

  • 管控服务平滑重启、热配置加载、版本无停机升级等核心运维操作

Worker 工作进程

  • 由 Master 进程通过 fork 系统调用生成,官方推荐配置数量等于服务器 CPU 核心数

  • 所有 Worker 进程相互独立,平等争抢并处理客户端网络请求

  • 内置 accept_mutex 互斥锁机制,有效规避多进程抢占连接产生的资源冲突

  • 单个 Worker 进程内部依托事件驱动模型,异步处理多条用户请求

实例:业务上线修改 Nginx 转发规则,执行平滑重启命令后,Master 进程会启动新 Worker 进程承接新请求,旧 Worker 进程处理完存量请求后自动销毁,全程服务无中断。

服务端缓存

Nginx 内置 proxy_cache 服务端缓存模块,可对后端业务服务器返回的响应数据进行本地磁盘或内存缓存存储。客户端重复发起相同请求时,Nginx 直接读取缓存数据响应,无需反复转发请求至后端服务,有效降低后端集群访问压力,缩短请求响应耗时。

同时缓存机制搭配零拷贝、内存映射文件读取技术,进一步优化静态资源与缓存数据的传输效率。

实例:门户网站首页静态页面、活动宣传图片等高频访问资源,接入 Nginx 缓存后,用户二次访问可秒级加载。

反向代理

image-yuPQ.webp


Nginx 反向代理可隐藏后端真实服务器 IP 与端口信息,隔绝外网直接访问内网业务服务,提升内网服务安全等级。同时依托反向代理能力可快速实现流量分发、集群负载均衡,轻松承接业务流量高峰期访问压力。

日常开发中还可配置代理请求头、实现 HTTPS 协议转发、WebSocket 长连接代理,适配前后端分离、微服务架构等主流业务模式。

实例:大型电商平台统一通过域名接入 Nginx 反向代理节点,由代理节点按照调度规则,将用户下单、浏览、搜索等请求分发至后端不同业务集群。

Nginx 模块体系

Nginx 采用模块化设计,遵循高内聚、低耦合的设计原则,所有功能均以模块形式拆分实现,可按需编译加载,灵活拓展业务能力。主流模块分类如下:

  • 核心模块:承载基础运行能力,包含日志打印、配置解析、进程管理等底层必备功能

  • 标准 HTTP 模块:原生内置模块,支撑 HTTP 协议基础请求处理、状态码返回、请求头部解析等通用能力

  • 可选 HTTP 拓展模块:按需开启,实现资源防盗链、IP 访问限制、地理位置解析等进阶功能

  • 邮件协议模块:小众业务场景使用,支持 POP3、IMAP、SMTP 邮件代理转发

  • 第三方拓展模块:社区开源模块,常用包含 Lua 脚本模块、JSON 解析模块、灰度发布模块等,也是 OpenResty 生态的核心依托

实例:网站需要实现接口动态鉴权、流量灰度分发,可加载对应第三方模块快速实现,无需修改 Nginx 底层源码。

Nginx 常见场景

凭借轻量化、高性能、易部署的特性,Nginx 可覆盖绝大多数互联网业务部署场景:

  • 反向代理部署:隐藏内网服务地址,统一流量入口,筑牢外网访问安全防线

  • 集群负载均衡:合理分发客户端流量,均衡多台后端服务器运行压力

  • 服务端缓存加速:缓存静态资源与高频接口数据,提升访问速度,减负后端服务

  • 流量管控与访问拦截:配置 IP 黑名单、请求速率限制,抵御爬虫、恶意攻击

  • 动静分离部署:独立承载图片、视频、JS、CSS 等静态资源,动态请求转发后端服务

  • 资源防盗链与跨域配置:保护站点专属资源,解决前后端项目跨域访问问题

  • HTTPS 证书配置:统一完成全站 HTTPS 加密部署,实现 HTTP 自动跳转 HTTPS

  • WebSocket 长连接代理:适配即时通讯、在线聊天室、实时数据推送等长连接业务

  • 服务高可用搭建:配合 Keepalived 实现双机热备,杜绝单点服务故障