Nginx 架构

Master/Worker + epoll + 11 阶段管线 + upstream

Nginx User Browser / Client Master Process 管理 worker / 信号 / reload Worker 1 事件循环 Worker 2 事件循环 Worker N 事件循环 epoll/kqueue IO 多路复用 epoll/kqueue IO 多路复用 epoll/kqueue IO 多路复用 连接/请求内存池 512B / 4k / large buffers HTTP 状态机 解析请求行 + Header 11 阶段管线 POST_READ → LOG Proxy Cache proxy_cache 本地缓存 Upstream 负载均衡 + 健康检查 共享内存 limit_conn / limit_req zone Backend Servers FastCGI / HTTP / uWSGI HTTPS fork limit zones HTTP Legend External Security Backend Message bus Database

进程模型

  • • Master 不处理网络事件,只管理 worker
  • • Worker 数量通常 = CPU 核心数
  • • 一个请求完全由一个 worker 处理
  • • accept_mutex 避免惊群

事件驱动

  • • epoll (Linux) / kqueue (BSD)
  • • ET 模式必须立即处理
  • • 单 worker 可处理上万连接
  • • O(1) 不随 fd 数量下降

请求处理

  • • 状态机解析 Header,零拷贝
  • • 11 阶段管线串行处理
  • • 共享内存跨 worker 生效
  • • upstream 主动健康检查