一 main 简要分析
nginx 的好处在此不列举,分析下源码,记录下笔记,以待后续能够及时查阅。
源码分析习惯于从main的流程分析, nginx 的main函数,考虑master, worker场景,主要完成以下的功能。
1)解析命令行参数
2)从系统环境变量进程继承已打开的监听 fd
3)初始化支持模块的index
4)解析配置文件
5)启动woker进程
二 解析命令行参数
命令行参数介绍几个重要的
-p, 指定一个prefix, 配置文件读取和日志写入时再prefix 配置的目录下
-c, 指定配置文件
-g, 指定全局的参数
-s, 这个参数会影响到 nginx 的操作,可以取值stop,quit,reopen, reload等
三 从系统环境变量进程继承已打开的监听 fd
nginx重新加载时会通过环境变量来传递部分参数,其中就包含已经打开的fd
四 解析配置文件
nginx 进程启动时,会递归解析配置文件,将各模块的配置项进行进行,特别地,nginx http模块监听的端口此时会被添加到时间模块中去。当然所有模块的配置都是在此时完成解析
五 启动woker进程
最后,nginx 会启动worker进程,worker进程用来处理事件,包括网络事件和定时器事件。
总结
从进程启动的角度来开,nginx 和大多数进程一样,做配置解析,然后启动进程的业务出来流程,当然这5个部分是nginx进程启动时比较重要的工作,还有很多细节工作没有一一列出。