理解 Nginx 源码之一配置文件

概述

Nginx 是使用一个 master 进程来管理多个 worker 进程提供服务。master 负责管理 worker 进程,而 worker 进程则提供真正的客户服务,worker 进程的数量一般跟服务器上 CPU 的核心数相同,worker 之间通过一些进程间通信机制实现负载均衡等功能。Nginx 进程之间的关系可由下图表示:

理解 Nginx 源码之一配置文件

niginx进程间的关系

Nginx 服务启动时会读入配置文件,后续的行为则按照配置文件中的指令进行。Nginx 的配置文件是纯文本文件,默认安装 Nginx 后,其配置文件均在 /usr/local/nginx/conf/ 目录下。其中,nginx.conf 为主配置文件。配置文件中以 # 开始的行,或者是前面有若干空格或者 TAB 键,然后再跟 # 的行,都被认为是注释。这里只是了解主配置文件的结构。

Nginx 配置文件是以 block(块)形式组织,每个 block 都是以一个块名字和一对大括号 “{}” 表示组成,block 分为几个层级,整个配置文件为 main 层级,即最大的层级;在 main 层级下可以有 event、http 、mail 等层级,而 http 中又会有 server block,server block中可以包含 location block。即块之间是可以嵌套的,内层块继承外层块。最基本的配置项语法格式是“配置项名 配置项值1 配置项值2 配置项值3 ... ”;

每个层级可以有自己的指令(Directive),例如 worker_processes 是一个main层级指令,它指定 Nginx 服务的 Worker 进程数量。有的指令只能在一个层级中配置,如worker_processes 只能存在于 main 中,而有的指令可以存在于多个层级,在这种情况下,子 block 会继承 父 block 的配置,同时如果子block配置了与父block不同的指令,则会覆盖掉父 block 的配置。指令的格式是“指令名 参数1 参数2 … 参数N;”,注意参数间可用任意数量空格分隔,最后要加分号。

下图是 Nginx 配置文件通常结构图示。

理解 Nginx 源码之一配置文件

nginx配置文件的层次结构

Nginx 服务的基本配置项

Nginx 服务运行时,需要加载几个核心模块和一个事件模块,这些模块运行时所支持的配置项称为基本配置;基本配置项大概可分为以下四类:

  • 用于调试、定位的配置项;
  • 正常运行的必备配置项;
  • 优化性能的配置项;
  • 事件类配置项;

各个配置项的具体实现如下:

理解 Nginx 源码之一配置文件

用于调试、定位的配置项

理解 Nginx 源码之一配置文件

正常运行的配置项

理解 Nginx 源码之一配置文件

优化性能配置项

理解 Nginx 源码之一配置文件

事件类配置项

HTTP 核心模块的配置

具体可以参看《Nginx 中 HTTP 核心模块配置》

理解 Nginx 源码之一配置文件

虚拟主机与请求分发

理解 Nginx 源码之一配置文件

虚拟主机与请求分发

理解 Nginx 源码之一配置文件

文件路径的定义

理解 Nginx 源码之一配置文件

内存及磁盘资源分配

理解 Nginx 源码之一配置文件

网络连接设置

理解 Nginx 源码之一配置文件

网络连接设置

理解 Nginx 源码之一配置文件

MIME 类型设置

理解 Nginx 源码之一配置文件

限制客户端请求

理解 Nginx 源码之一配置文件

文件操作的优化

理解 Nginx 源码之一配置文件

客户请求的特殊处理

以下是在 centos系统成功安装 Nginx 之后的主配置文件

理解 Nginx 源码之一配置文件

理解 Nginx 源码之一配置文件

理解 Nginx 源码之一配置文件

理解 Nginx 源码之一配置文件

理解 Nginx 源码之一配置文件

《深入理解Nginx》

《Nginx模块开发入门》

《Nginx开发从入门到精通》


分享到:


相關文章: