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

nginx源码学习之一

时间:2018-07-14 11:49:35      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:fun   全局   and   conf   amp   version   init   thread   col   

function main在core/nginx文件中。

 1 if (ccf->master && ngx_process == NGX_PROCESS_SINGLE) {
 2         ngx_process = NGX_PROCESS_MASTER;
 3 }
 4 
 5 if (ngx_process == NGX_PROCESS_SINGLE) {
 6     ngx_single_process_cycle(cycle);
 7 
 8 } else {
 9     ngx_master_process_cycle(cycle);
10 }
11 
12 #define NGX_PROCESS_SINGLE     0

若 master_process 开关关闭,main进入ngx_single_process_cycle,其中ngx_process为全局变量,默认为0。

在此之前,nginx做了一些基础工作,更重要的基础工作由core/ngx_cycle.c:ngx_init_cycle完成。

ngx_modules数组来自于编译生成的obj/ngx_modules.c文件,该数组定义了将要编译到目标二进制文件里的module。

 

nginx由模块组成,一个模块对外暴露两个结构体:ngx_command_t和ngx_module_t。

 1 struct ngx_command_s {
 2     ngx_str_t             name;
 3     ngx_uint_t            type;
 4     char               *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
 5     ngx_uint_t            conf;
 6     ngx_uint_t            offset;
 7     void                 *post;
 8 };
 9 
10 
11 struct ngx_module_s {
12     ngx_uint_t            ctx_index;
13     ngx_uint_t            index;
14 
15     ngx_uint_t            spare0;
16     ngx_uint_t            spare1;
17     ngx_uint_t            spare2;
18     ngx_uint_t            spare3;
19 
20     ngx_uint_t            version;
21 
22     void                 *ctx;
23     ngx_command_t        *commands;
24     ngx_uint_t            type;
25 
26     ngx_int_t           (*init_master)(ngx_log_t *log);
27 
28     ngx_int_t           (*init_module)(ngx_cycle_t *cycle);
29 
30     ngx_int_t           (*init_process)(ngx_cycle_t *cycle);
31     ngx_int_t           (*init_thread)(ngx_cycle_t *cycle);
32     void                (*exit_thread)(ngx_cycle_t *cycle);
33     void                (*exit_process)(ngx_cycle_t *cycle);
34 
35     void                (*exit_master)(ngx_cycle_t *cycle);
36 
37     uintptr_t             spare_hook0;
38     uintptr_t             spare_hook1;
39     uintptr_t             spare_hook2;
40     uintptr_t             spare_hook3;
41     uintptr_t             spare_hook4;
42     uintptr_t             spare_hook5;
43     uintptr_t             spare_hook6;
44     uintptr_t             spare_hook7;
45 };

 



nginx源码学习之一

标签:fun   全局   and   conf   amp   version   init   thread   col   

原文地址:https://www.cnblogs.com/nginx-core/p/9308871.html

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