文章目录
- 前言
- 一、简介
- 二、工作原理
- 1. 多进程架构
- 2. 事件驱动模型
- 3. 模块化设计
- 三、工作流程
- 1. 启动阶段
- 2. 等待连接
- 3. 请求处理阶段
- 4. 响应构造与输出
- 5. 连接关闭
前言
Nginx
Nginx(发音为“Engine-X”)是一款高性能的开源Web服务器软件,同时也广泛用作反向代理、负载均衡器和HTTP缓存服务器。
一、简介
Nginx(发音为“Engine-X”)是一款高性能的开源Web服务器软件,同时也广泛用作反向代理、负载均衡器和HTTP缓存服务器。
Nginx由Igor Sysoev于2004年首次发布,设计目标是解决传统Web服务器(如Apache)在高并发场景下的性能瓶颈。
Nginx以其异步非阻塞的事件驱动架构著称,能够高效处理数以万计的并发连接,广泛应用于现代互联网架构中。
二、工作原理
Nginx 的核心是 事件驱动 + 异步非阻塞 IO,其运行机制遵循以下原则。
Nginx 的整体架构,可以分为三大核心部分:
1. 多进程架构
Master-Worker 多进程模型:启动后由一个 Master 进程,统一管理多个 Worker 子进程。
-
Master 进程:负责读取配置、管理 Worker 进程、响应控制命令(如 reload、stop);
-
Worker 进程:负责处理客户端请求,一个 Worker 可同时处理多个连接;
-
每个 Worker 独立处理请求,互不干扰,采用 epoll 事件机制监听连接;
2. 事件驱动模型
基于操作系统的高效 IO 事件通知机制(Linux 下为 epoll);
利用事件循环处理连接的可读、可写、超时等事件;
内部采用 Reactor 模式, 进行模块解耦与异步调度。
3. 模块化设计
核心功能通过模块加载实现,分为:
-
核心模块(如 http、event、mail);
-
功能模块(如 proxy、rewrite、gzip、ssl);
-
第三方模块(如 Lua、RTMP、OpenResty 插件)。
三、工作流程
Nginx工作流程,如下图所示:
1. 启动阶段
- Master 进程加载配置文件;
- 初始化所需资源(监听端口、缓存目录、日志文件等);
- 派生多个 Worker 进程。
2. 等待连接
- Worker 进程监听事件循环(如 epoll_wait);
- 当有客户端连接时,从监听套接字 accept 新连接。
3. 请求处理阶段
- 读取并解析 HTTP 请求报文;
- 匹配 location 配置;
- 根据配置决定请求处理方式(如静态文件、本地 FastCGI、反向代理到上游等);
- 可进行 rewrite、重定向、认证、限速、缓存、压缩等处理。
4. 响应构造与输出
- 将响应数据写入缓存、或直接读取文件;
- 利用 sendfile 零拷贝输出到网络;
- 支持响应缓存控制(如 Cache-Control、ETag)和 gzip 压缩。
5. 连接关闭
- 根据配置决定是否开启 keepalive 长连接;
- 释放资源、关闭连接或继续复用连接。
本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识
Nginx工作原理最全详解(图文全面总结)