码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx启动流程概览

时间:2020-04-07 23:55:46      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:core   nec   event   array   访问   modules   lis   cti   write   

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启动流程概览

标签:core   nec   event   array   访问   modules   lis   cti   write   

原文地址:https://www.cnblogs.com/zhangyi-studio/p/12657179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!