nginx 有使用ngx_process 变量表示进程的类型,这个变量的取值在ngx_process_cycle.h中定义,主要有下面几个
一 maste or single
nginx 可以单个进程工作,也可以 master+ worker模式工作,所以当使用前者模式启动的时候,进程就是NGX_PROCESS_SINGLE ; 当使用后者的时候,那么父进程就是 NGX_PROCESS_MASTER,而子进程就是 NGX_PROCESS_WORKER。使用哪种模式可以在配置文件中设置,默认使用后者,如果配置文件中 masterprocess off 开启,那么就使用了前者。
ngx_process 初始值是0,也就是NGX_PROCESS_SINGLE,在 main 函数中:
if (ccf->master && ngx_process == NGX_PROCESS_SINGLE) {
ngx_process = NGX_PROCESS_MASTER;
}
也就是核心模块中的master设置了,并且进程类型还未初始化,那么当前进程就是master进程。
我们看ccf->master 这个变量是在核心模块配置的初始化中,默认设置为1:
ngx_conf_init_value(ccf->master, 1);
因此,整个系统默认就是master模式,只有在配置中masterprocess off 才是single模式。
二 signal
当我们需要关闭、重启等操作的时候,需要向工作中的进程发送信号,谁来发呢,这个进程就是 NGX_PROCESS_SIGNALLER
三 other
辅助进程暂时还没有搞清楚。