nginx 心得
1. 執(zhí)行configure后,除了生成Makefile文件,還生成了ngx_modules.c文件,這個文件就是用來定義ngx_modules[]數(shù)組的。這個文件可以在objs文件夾中查看
ngx_modules[]中指明了每個模塊在Nginx中的優(yōu)先級,當(dāng)一個請求符合多個模塊的處理規(guī)則是,將按照它們在ngx_modules數(shù)組中的順序選擇最靠前的模塊優(yōu)先處理
2.?struct ngx_module_s {
? ? ngx_uint_t ? ? ? ? ? ?ctx_index;
//對于一類模塊(由下面的type成員決定類別)而言,ctx_index表示當(dāng)前模塊在這類模塊中的序號。這個成員常常是由管理這類模塊的一個Nginx核心模塊設(shè)置的,對于所有的http模塊而言,ctx_index是由核心模塊ngx_http_module設(shè)置的。ctx_index非常重要,Nginx的模塊化設(shè)計非常依賴于各個模塊的順序,它們既用于表達優(yōu)先級,也用于表明每個模塊的位置,借以幫助Nginx框架快速獲得某個模塊的數(shù)據(jù)。
? ? ngx_uint_t ? ? ? ? ? ?index;
//index表示當(dāng)前模塊在ngx_modules數(shù)組中的序號。注意,ctx_index表示的是當(dāng)前模塊在一類模塊中的序號,而index表示當(dāng)前模塊在所有模塊中的序號。nginx啟動時會根據(jù)ngx_modules數(shù)組設(shè)置各模塊的index值。
?void ? ? ? ? ? ? ? ? *ctx;
//ctx用于指向一類模塊的上下文結(jié)構(gòu)體。為什么需要ctx呢?Nginx模塊有很多種類,不同類模塊之間的功能差別很大。例如,事件類型的模塊主要處理I/O事件相關(guān)的功能,http類型的模塊主要處理http應(yīng)用層的功能。這樣,每個模塊都有了自己的特性,而ctx將會指向特定類型模塊的公共接口。例如,在http模塊中,ctx需要指向ngx_http_module_t結(jié)構(gòu)體
? ? ngx_command_t ? ? ? ?*commands;
//commands將處理nginx.conf中的配置項
};
3. Nginx框架會調(diào)用核心模塊,rtmp模塊是由它的代言人--- ngx_rtmp_module核心模塊定義的,這個核心模塊還會負責(zé)加載所有的rtmp模塊,但業(yè)務(wù)的核心邏輯以及對于具體的請求該選用哪一個rtmp模塊處理這樣的工作,則是由ngx_rtmp_core_module模塊處理。
4.?
總結(jié)
- 上一篇: nginx rtmp代码架构1 hook
- 下一篇: 直播主流的协议