Nginx 학습 노트 - Nginx 모듈 의 데이터 구조

typedef struct ngx_module_s     ngx_module_t;
struct ngx_module_s {
    /*
     *    ctx_index、index、spare0、spare1、spare2、spare3、version           ,
     *    Nginx     NGX_MODULE_V1   ,        7  
     */
    #define NGX_MODULE_V1   0,0,0,0,0,0,1
                           
    /*
     *       (    type      )  ,ctx_index               。
     *                  Nginx       ,     HTTP    ,ctx_index
     *       ngx_http_module   。ctx_index    ,Nginx               
     *    ,          ,            ,    Nginx          
     *    
     */
    ngx_uint_t  ctx_index;
                           
    /*
     * index       ngx_modules      。  ,ctx_index               
     *   , index               ,     。Nginx      ngx_modules  
     *       index 。
     */
    ngx_uint_t  index;
                           
    /* spare       ,     */
    ngx_uint_t  spare0;
    ngx_uint_t  spare1;
    ngx_uint_t  spare2;
    ngx_uint_t  spare3;
                           
    /*      ,       。      ,   1 */
    ngx_uint_t  version;
                           
    /*
     * ctx               。  Nginx       ,              。  ,
     *            I/O       ,HTTP         HTTP      。  ,    
     *         , ctx               。  , HTTP   ,ctx    
     * ngx_http_module_t   
     */
    void    *ctx;
                           
    /*     nginx.conf      */
    ngx_command_t   *commands;
                           
    /*
     * type        ,  ctx        。   Nginx ,         5 :
     * NGX_HTTP_MODULE、NGX_CORE_MODULE、NGX_CONF_MODULE、NGX_EVENT_MODULE、NGX_MAIL_MODULE
     */
    ngx_uint_t  type;
                           
    /*
     *  Nginx   、     ,  7        7          7   。      
     *     ,     Nginx        ,         NULL     。
     */
                           
    /*
     *  master       init_master,      ,           ,
     *   ,  init_master  NULL
     */
    ngx_uint_t  (*init_master)(ngx_log_t *log);
                           
    /*             , master/worker   ,        worker       */
    ngx_uint_t  (*init_module)(ngx_cycle_t *cycle);
                           
    /*
     *          , master/worker   ,  worker       ,   worker   
     *              init_process  
     */
    ngx_uint_t  (*init_process)(ngx_cycle_t *cycle);
                           
    /*   Nginx         ,  init_thread            ,  NULL */
    ngx_uint_t  (*init_thread)(ngx_cycle_t *cycle);
                           
    /* exit_thread    ,  NULL */
    void    (*exit_thread)(ngx_cycle_t *cycle);
                           
    /*         。 master/worker   ,worker           */
    void    (*exit_process)(ngx_cycle_t *cycle);
                           
    /*  master         */
    void    (*exit_master)(ngx_cycle_t *cycle);
                           
    /*
     *   8 spare_hook        ,      ,   Nginx   NGX_MODULE_V1_PADDING    
     * #define NGX_MODULE_V1_PADDING 0,0,0,0,0,0,0,0
     */
    uintptr_t   spare_hook0;
    uintptr_t   spare_hook1;
    uintptr_t   spare_hook2;
    uintptr_t   spare_hook3;
    uintptr_t   spare_hook4;
    uintptr_t   spare_hook5;
    uintptr_t   spare_hook6;
    uintptr_t   spare_hook7;
};

미 완성 계속...

좋은 웹페이지 즐겨찾기