进程
nginx有一个master进程和几个worker进程。master进程的主要目的是读取和诊断配置文件,收集和分配网络请求给worker进程,并管理worker进程。worker进程才是真正执行请求的处理。nginx采用基于事件的模型和依赖于操作系统的机制,以有效地在worker进程之间分配请求。worker进程的数量使用worker_processes指令定义在配置文件中,可以为固定的数量或者自动调整到可用CPU核心的数量。一般配置worker进程数等于可用CPU核心数。
配置文件
配置文件名默认为nginx.conf。nginx由在配置文件中指定的指令控制的模块组成。指令分为简单指令和块指令。一个简单的指令由名称、空格分隔的参数组成,并以分号结束。块指令具有与简单指令相同的结构,但是它以一组外围是大括号的附加指令结束而不是分号。如果块指令可以在括号内包含其他指令,则它被称为上下文,例如 events、http、server、location。在任何上下文外的指令被认为是main上下文,events、http属于main上下文,server属于http上下文,location属于server上下文。#号之后的行的内容被视为注释。
可执行文件
可执行文件名是nginx,文件路径可在编译时指定或者使用默认路径。启动nginx可以在nginx可执行文件目录执行 ./nginx。启动了nginx后,可以通过执行 ./nginx -s signal控制nginx,signal有如下几种:
stop:快速关闭,强制关闭,类似kill -9
quit: 正常关闭,等待worker进程处理完当前请求再关闭
reload:重新加载配置文件
reopen: 重启日志文件
一旦master进程接收到重新加载配置文件的signal,它就会检查新配置文件的语法有效性,并尝试应用它提供的配置。如果成功,master进程启动新的worker进程,并向旧的worker进程发送消息,请求它们关闭。如果失败,master进程回滚更改并继续使用旧的配置。旧的worker进程,接收到关闭命令后,停止接受新的连接,继续服务当前所有请求直到它们处理完成。之后旧的worker进程退出。