Nginx架构分析

1.整体架构

        Nginx最基本的就是master进程和worker进程,还有可能会有Cache相关进程。这些进程之间会相互通信。Nginx还有强大的功能模块:比如upstream与后端Web服务器通信、fastcgi与后端应用服务器通信等。完整的整体框架如图所示:

2.master进程

        Nginx的主进程充当master进程,而由master进程fork()出来的子进程则充当worker进程。

       master进程不会对用户请求提供服务,只用于管理真正提供服务的worker进程。当任意一个worker进程出项错误而意外退出时,master进程会立刻启动新的worker进程继续服务。

      Nginx的master进程的ngx_master_process_cycle()函数是主要的入口,该函数做完信号处理设置等之后就会调用一个名为ngx_start_worker_processes()的函数用于fork()产生出子进程。然后程序会进入一个for(;;)的无限循环中。在for(;;)循环中有一个关键的sigsuspend()函数调用,该函数会使得master进程阻塞在这里,直到收到信号为止。然后根据收到的信号而设置需要的处理。

void
ngx_master_process_cycle(ngx_cycle_t *cycle)
{//信号处理设置等操作.......//