解剖Nginx·模組開發篇(4)模組開發中的命名規則和模組載入與執行流程
解剖Nginx·模組開發篇(4)模組開發中的命名規則和模組載入與執行流程
- 作者:柳大·Poechant(鍾超)
- 郵箱:zhongchao.ustc#gmail.com(# -> @)
- 部落格:Blog.CSDN.net/Poechant
- 日期:June 2nd, 2012
1 命名規則
1.1 基本變數
基本變數有三個:
- ngx_module_t 型別的 ngx_http_foo_bar_module;
- ngx_command_t 型別的陣列 ngx_http_foo_bar_commands;
- ngx_http_module_t 型別的 ngx_http_foo_bar_module_ctx。
假設你開發了一個 Foo Bar 模組,那麼模組名稱應該叫:
ngx_http_foo_bar_module
命令集合的名字的命名規則:
ngx_http_foo_bar_commands
上下文的明子的命名規則:
ngx_http_foo_bar_module_ctx
1.2 基本型別
模組配置
ngx_http_foo_bar_<main|srv|loc>_conf_t
2 載入與執行流程
這與 ngx_http_foo_bar_module_ctx 很有關係,它是 ngx_http_module_t 型別的,該型別定義如下:
typedef struct {
ngx_int_t (*preconfiguration)(ngx_conf_t *cf);
ngx_int_t (*postconfiguration)(ngx_conf_t *cf);
void *(*create_main_conf)(ngx_conf_t *cf);
char *(*init_main_conf)(ngx_conf_t *cf, void *conf);
void *(*create_srv_conf)(ngx_conf_t *cf);
char *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);
void *(*create_loc_conf)(ngx_conf_t *cf);
char *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
} ngx_http_module_t;
2.1 preconfiguration
呼叫ngx_http_foo_bar_module_ctx.preconfiguration
初始化 http 元件和 nginx 其他元件的互動;
2.2 解析配置檔案
解析配置檔案中的http
模組。http
包含server
、location
等模組,所以在解析http
元件時,會根據具體的配置情況,多次呼叫ngx_http_foo_bar_module_ctx.create_(srv|loc)_conf
,建立 main_conf、srv_conf、loc_conf;
2.3 初始化 http 元件的 main 部分
呼叫ngx_http_foo_bar_module_ctx.init_main_conf
初始化 main 元件;
2.4 merge
呼叫ngx_http_foo_bar_module_ctx.merge_srv_conf
合併那些定義在“http”元件中的“server”元件配置。呼叫ngx_http_foo_bar_module_ctx.merge_loc_conf
合併那些定義在上層元件中的“location”配置;
2.5 postconfiguration
呼叫ngx_http_foo_bar_module_ctx.postconfigation
初始化 http 元件和 nginx 其他元件的互動。
-
轉載請註明來自柳大的CSDN部落格:Blog.CSDN.net/Poechant
-
相關文章
- 解剖Nginx·模組開發篇(1)跑起你的 Hello World 模組!Nginx
- 解剖Nginx·模組開發篇(6)配置檔案config入門Nginx
- 解剖Nginx·模組開發篇(2)ngx_http_hello_world_module 模組基本結構定義NginxHTTP
- 解剖Nginx·模組開發篇(3)ngx_http_hello_world_module 模組的基本函式實現NginxHTTP函式
- nginx模組開發Nginx
- 解剖Nginx·模組開發篇(5)解讀內建非預設模組 ngx_http_stub_status_moduleNginxHTTP
- Xposed模組的開發
- 使用typescript開發angular模組(編寫模組)TypeScriptAngular
- CSS命名規範和模組化的思考CSS
- 模組化開發(二)
- 前端模組化開發前端
- Laravel 模組化開發Laravel
- Yaf多模組開發
- struts多模組開發
- 元件化開發和模組化開發概念辨析元件化
- 前端規範-佈局和模組命名前端
- Js模組化開發的理解JS
- 開發更好用的 JavaScript 模組JavaScript
- 開發ejb如何劃分模組,使模組粒度合理
- 深入理解Nginx:模組開發與架構解析(第2版)Nginx架構
- 淺談模組化開發
- 聊聊前端模組化開發前端
- ModStartCMS模組開發介紹
- 模組化開發淺析
- apache模組開發之helloworldApache
- gradle多模組開發Gradle
- laravel 多模組模式下進行開發Laravel模式
- Vue使用SCSS進行模組化開發VueCSS
- Flutter外掛開發《iOS原生模組開發》FlutteriOS
- Laravel-Module 模組開發一:評論模組實現Laravel
- odoo 開發入門教程系列-模組互動Odoo
- 核心模組的載入流程
- JavaScript模組化開發的那些事JavaScript
- Nginx limit模組限制併發數NginxMIT
- Javascript模組化開發基礎JavaScript
- 評論模組開發總結
- 上傳模組開發總結
- 前端開發練習:快報模組前端