Nginx启动流程概览

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx启动流程概览相关的知识,希望对你有一定的参考价值。

nginx启动流程概览

1、 Init Cycle

2、 Init Process

3、 Start Worker

4、 Event Handle

Init Cycle

  • ngx_cycle 是nginx全局配置,类型为ngx_cycle_t,其结构如下(已精简):
    struct ngx_cycle_s {                                                                                                       
        void                  ****conf_ctx;   //全局配置项
        ngx_pool_t               *pool;                                                                
        ngx_log_t                *log;                                                                                                  
        
        ngx_connection_t        **files;
        ngx_connection_t         *free_connections;
        
        ngx_module_t            **modules;    //module数组                                                                                                          
        ngx_queue_t               reusable_connections_queue;  //重复使用的socket存放队列
        ngx_uint_t                reusable_connections_n;                                                                                                                                                                                             
        ngx_array_t               listening;                                                                                            
        
        ngx_rbtree_t              config_dump_rbtree;
        ngx_rbtree_node_t         config_dump_sentinel;
        
        ngx_connection_t         *connections;
        ngx_event_t              *read_events;
        ngx_event_t              *write_events;
        ... ...
    };
  • 看到ngx_cycle的conf_ctx的指针的层次可知,这个结构将会很复杂,其大致结构为:
    • 第一层指针指向几个类型为NGX_CORE_MODULE的配置结构,以http模块为例,指针类型为ngx_http_conf_ctx_t;
    • 第二层指针指向子类型配置的结构数组,主要体现在HTTP类型模块上,HTTP配置比较复杂,分为Main、Svr、Location三类,所以这一层是含三个元素的数组;
    • 第三层指针指向各个同类型模块的不同类型配置,对HTTP模块而言,Main级别的配置有多个,SVR级别和Loc级别也有多个;
    • 最后一层指针便能访问具体的某一模块的特定配置项。

待续

以上是关于Nginx启动流程概览的主要内容,如果未能解决你的问题,请参考以下文章

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

linux系统启动流程概览

Nginx学习之十一-Nginx启动框架处理流程

springboot启动流程构造SpringApplication实例对象

Nginx:启动流程解析

VSCode自定义代码片段——git命令操作一个完整流程