国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > WEB服務(wù) > 正文

Nginx 配置文件解析

2020-05-27 13:45:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  cycle = ngx_init_cycle(&init_cycle):

  1、在內(nèi)存池中分配一個(gè)ngx_cycle_t變量,并初始化它的各個(gè)成員。

  2、調(diào)用core類型的create_conf,實(shí)際只有一個(gè)ngx_core_module_create_conf函數(shù)----初始化ngx_core_conf_t結(jié)構(gòu)(存放core_module支持的指令),保存在ngx_cycle->conf_ctx數(shù)組中。可以說(shuō),此時(shí),ngx_cycle->conf_ctx數(shù)組中只有一個(gè)ngx_core_conf_t結(jié)構(gòu)。

  3、初始化ngx_conf_t結(jié)構(gòu)。

  4、ngx_conf_parse 解析配置文件,把結(jié)果保存在模塊對(duì)應(yīng)的ngx_conf里面。

  5、調(diào)用core類型的init_conf,實(shí)際只有一個(gè)ngx_core_module_init_conf函數(shù)(初始化對(duì)應(yīng)的ngx_core_conf_t函數(shù))。為什么要init,都已經(jīng)解析配置文件了,應(yīng)該在這之前初始化呀--如果值為-1,表明沒(méi)有設(shè)置,初始化默認(rèn)值!

  6、ngx_open_listening_sockets:遍歷listening數(shù)組并打開(kāi)所有偵聽(tīng)sockets(socket()->setsockopt()->bind()->listen())。

  7、調(diào)用所有模塊的init_module(實(shí)際上只有ngx_event_core_module模塊定義了該callback,即只有ngx_event_module_init()被調(diào)用)。

  ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename):

  函數(shù)的作用就是循環(huán)不停的從配置文件中讀取指令,然后進(jìn)行指令處理,直到結(jié)束

  1、先分析ngx_core_module的指令及其對(duì)應(yīng)的set函數(shù)。

  { ngx_string("daemon"),

  NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_FLAG,

  ngx_conf_set_flag_slot,

  0,

  offsetof(ngx_core_conf_t, daemon),

  //計(jì)算daemon成員在ngx_core_conf_t結(jié)構(gòu)體里面的偏移

  NULL },

  ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf):里面代碼很清楚,根據(jù)配置指令,設(shè)置模塊conf結(jié)構(gòu)的成員變量。

  2、分析ngx_events_modules的指令及其對(duì)應(yīng)的set函數(shù)。只有一條指令:

  { ngx_string("events"),

  NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,

  ngx_events_block,

  0,

  0,

  NULL },

  1、ngx_events_module編號(hào)為3,于是ngx_cycle->conf_ctx指向的void*數(shù)組第3號(hào)槽位指向一個(gè)void*指針,這個(gè)指針又指向一個(gè)void*數(shù)組(個(gè)數(shù)==事件類型模塊的個(gè)數(shù),Linux平臺(tái)編譯之后,只有兩個(gè)ngx_epoll_module事件模型ngx_event_core_module和ngx_epoll_module)。

  2、調(diào)用event類型模塊的上下文ngx_event_module_t 的create_conf鉤子,為void*數(shù)組指定槽位創(chuàng)建相應(yīng)的conf結(jié)構(gòu)。

  3、更改當(dāng)前cf環(huán)境(NGX_EVENT_MODULE,NGX_EVENT_CONF)解析events{ 塊里面的指令。里面的set函數(shù)都是根據(jù)配置文件設(shè)置ngx_event_conf_t結(jié)構(gòu)體里面的成員變量。

  3、分析ngx_http_module的指令及其對(duì)應(yīng)的set函數(shù)。只有一條指令,如下:

  { ngx_string("http"),

  NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,

  ngx_http_block,

  0,

  0,

  NULL },

  ngx_init_cycle創(chuàng)建了core module的config,那么http module相關(guān)的config在那里創(chuàng)建呢?http module相關(guān)的config是在ngx_http_block中創(chuàng)建(ngx_http_conf_ctx_t)的,在ngx_http_block中會(huì)創(chuàng)建,初始化,合并config(未完全看懂),以及整個(gè)http handler phase的初始化(還未看)等等。

 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 个旧市| 西乌珠穆沁旗| 巍山| 任丘市| 公安县| 桐梓县| 明溪县| 庄河市| 贺州市| 和田县| 通河县| 平顶山市| 阿勒泰市| 黄平县| 南部县| 宣汉县| 湾仔区| 绍兴县| 扶风县| 黄龙县| 从江县| 徐州市| 中牟县| 华池县| 周至县| 吉安县| 延川县| 望都县| 芦溪县| 桂林市| 宁海县| 广汉市| 景宁| 梅河口市| 政和县| 汨罗市| 额济纳旗| 长子县| 茌平县| 泾阳县| 磴口县|