解剖Nginx·模块开发篇(4)模块开发中的命名规则和模块加载与运行流程
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中的过程,这部分涵盖了如何使模块运行以及与nginx核心通信的方法。 处理模块、过滤模块和负载均衡模块的分析部分,详细地阐述了各个模块类型的具体实现...
4. **模块开发流程**:详述创建、编译、调试和部署Nginx模块的步骤,包括编写配置项、处理请求、生成响应等核心环节。 5. **案例分析**:通过实际的模块开发案例,演示如何将C++11和Boost库应用于实际问题,如日志...
深入理解Nginx模块开发与架构解析(完整版) pdf,nginx必备知识
关于Nginx模块开发的学习资源相对较少,《Emiller's Guide To Nginx Module Development》是一篇经典的文章,但其中的部分内容可能因Nginx版本更新而不适用。因此,对于初学者而言,最好的学习方式是从官方文档开始...
Nginx模块开发与架构详解
通过阅读《深入理解Nginx模块开发与架构解析(第2版)》,读者不仅可以了解到Nginx的基本架构和运行机制,还能深入到模块开发层面,成为Nginx的高级使用者和开发者。这将有助于在实际工作中优化Web服务性能,解决...
书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...
《深入理解Nginx模块开发与架构解析》第二版是一本专为Nginx开发者和运维人员准备的深度学习资料。这本书旨在帮助读者全面掌握Nginx的核心原理、模块开发及系统架构,从而更好地利用Nginx进行高性能的Web服务构建。 ...
深入理解Nginx模块开发与架构解析.深入理解Nginx模块开发与架构解析.
《Nginx模块开发指南:使用C++11和Boost程序库》是由罗剑锋编著的一本专业书籍,主要面向对Nginx有深入兴趣并希望通过编程扩展其功能的技术人员。这本书详细介绍了如何利用现代C++11特性和Boost库来开发高效的Nginx...
深入理解Nginx模块开发及架构解析,深入理解Nginx模块开发及架构解析
《Nginx深入理解Nginx模块开发与架构解析(第2版)》是一本针对Nginx技术的深入解析书籍,旨在帮助读者理解和掌握Nginx的核心设计理念以及如何进行高效的模块开发。这本书是该领域经典著作的更新版本,不仅延续了前一...
书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...
《深入理解Nginx模块开发与架构解析》这本书是针对Nginx web服务器进行深入学习和技术探索的专业指南。Nginx作为一个高性能、反向代理、负载均衡的HTTP和反向代理服务器,因其高效的性能和灵活的配置,在互联网行业...
深入理解Nginx模块开发与架构解析第2版LinuxUnix技术丛书 mobi格式,可以下载mobi阅读器打开
**最牛**的还是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的[nginx_lua_module]可以将Lua语言嵌入到Nginx配置中,从而利用Lua极大增强了Nginx本身的编程能力,甚至可以不用配合其它脚本语言(如PHP或...
《深入理解Nginx模块开发与架构解析》是一本针对Nginx技术的深度解析书籍,专注于探讨Nginx的内部机制、模块开发以及整体架构。Nginx是一款高性能的Web服务器,因其反向代理、负载均衡和静态文件处理能力而广受欢迎...