解剖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
-
相關文章
- 使用typescript開發angular模組(編寫模組)TypeScriptAngular
- 模組化開發(二)
- 前端模組化開發前端
- CSS命名規範和模組化的思考CSS
- 序列化模組,subprocess模組,re模組,常用正則
- Laravel-Module 模組開發一:評論模組實現Laravel
- Java開發中操作日誌的作用和模組Java
- 淺談模組化開發
- 模組化開發淺析
- 聊聊前端模組化開發前端
- ModStartCMS模組開發介紹
- Js模組化開發的理解JS
- 元件化開發和模組化開發概念辨析元件化
- 核心模組的載入流程
- CommonJS模組 和 ECMAScript模組JS
- 執行緒模組執行緒
- swiper 模組載入
- swoole 模組的載入
- Python入門(二十六):檔案模組(os模組與shutil模組)Python
- laravel 多模組模式下進行開發Laravel模式
- Nginx的HTTP模組與Stream模組:區別與應用場景NginxHTTP
- Nginx常用的模組Nginx
- 【Node】Addon C++模組開發C++
- 上傳模組開發總結
- 評論模組開發總結
- Javascript模組化開發基礎JavaScript
- Android模組化開發實踐Android
- 序列化模組,隨機數模組,os模組,sys模組,hashlib模組隨機
- 藉助Gradle Plugin解決模組化開發中模組如何對外暴露介面GradlePlugin
- Flutter外掛開發《iOS原生模組開發》FlutteriOS
- odoo 開發入門教程系列-模組互動Odoo
- 深入理解Nginx:模組開發與架構解析(第2版)Nginx架構
- ??Java開發者的Python快速進修指南:自定義模組及常用模組JavaPython
- nginx事件模組 -- 第二篇Nginx事件
- nginx事件模組-- 第四篇Nginx事件
- nginx事件模組 -- 第三篇Nginx事件
- saltstack 常用執行模組
- python-模組入門二(模組迴圈匯入,區分python檔案的兩種用途,模組搜尋路徑,軟體開發的目錄規範)Python
- [提問交流]onethink進行多模組開發