# 5.4 Nginx服务器架构

Nginx服务器启动后，产生<mark style="color:blue;">**一个主进程（master process）**</mark>，主进程执行一系列工作后产生<mark style="color:blue;">**一个或者多个工作进程（worker processes）**</mark>。

* <mark style="color:blue;">**主进程**</mark>主要进行**Nginx配置文件解析**、**数据结构初始化**、**模块配置和注册**、**信号处理**、**网络监听生成**、**工作进程生成和管理**等工作；
* <mark style="color:blue;">**工作进程**</mark>主要进行**进程初始化**、**模块调用**和**请求处理**等工作，是Nginx服务器提供服务的主体。

在客户端请求**动态站点**的过程中，Nginx服务器还涉及和后端服务器的通信。Nginx服务器将接收到的Web请求通过代理转发到后端服务器，由后端服务器进行数据处理和页面组织，然后将结果返回。

另外，Nginx服务器为了提高对请求的响应效率，进一步降低网络压力，采用了<mark style="color:blue;">**缓存机制**</mark>，**将历史应答数据缓存到本地**。<mark style="color:blue;">**在每次Nginx服务器启动后的一段时间内，会启动专门的进程对本地缓存的内容重建索引，保证对缓存文件的快速访问。**</mark>

{% hint style="info" %} <mark style="color:blue;">**缓存索引重建及管理进程（Cache Loader & Cache Manager）**</mark>

* **缓存索引重建进程**是在Nginx服务启动一段时间之后（默认是1分钟）由主进程生成，在缓存元数据重建完成后就自动退出；\
  缓存索引重建进程完成的主要工作是，**根据本地磁盘上的缓存文件在内存中建立索引元数据库**。该进程启动后，对本地磁盘上存放缓存文件的目录结构进行扫描，检查内存中已有的缓存元数据是否正确，并更新索引元数据库。
* **缓存索引管理进程**一般存在于主进程的整个生命周期，负责对缓存索引进行管理。\
  缓存索引管理进程主要负责在索引元数据更新完成后，**对元数据是否过期做出判断**。

**这两个进程维护的**<mark style="color:blue;">**内存索引元数据库**</mark>**，为工作进程对缓存数据的快速查询提供了便利。**
{% endhint %}
