`
Poechant
  • 浏览: 229598 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:24328
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:22104
社区版块
存档分类
最新评论

解剖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包含serverlocation等模块,所以在解析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中的过程,这部分涵盖了如何使模块运行以及与nginx核心通信的方法。 处理模块、过滤模块和负载均衡模块的分析部分,详细地阐述了各个模块类型的具体实现...

    Nginx模块开发指南

    4. **模块开发流程**:详述创建、编译、调试和部署Nginx模块的步骤,包括编写配置项、处理请求、生成响应等核心环节。 5. **案例分析**:通过实际的模块开发案例,演示如何将C++11和Boost库应用于实际问题,如日志...

    深入理解Nginx模块开发与架构解析(完整版)

    深入理解Nginx模块开发与架构解析(完整版) pdf,nginx必备知识

    Nginx模块开发入门

    关于Nginx模块开发的学习资源相对较少,《Emiller's Guide To Nginx Module Development》是一篇经典的文章,但其中的部分内容可能因Nginx版本更新而不适用。因此,对于初学者而言,最好的学习方式是从官方文档开始...

    Nginx模块开发与架构详解

    Nginx模块开发与架构详解

    深入理解Nginx模块开发与架构解析(第2版)

    通过阅读《深入理解Nginx模块开发与架构解析(第2版)》,读者不仅可以了解到Nginx的基本架构和运行机制,还能深入到模块开发层面,成为Nginx的高级使用者和开发者。这将有助于在实际工作中优化Web服务性能,解决...

    深入理解Nginx模块开发与架构解析第2版PDF

    书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...

    深入理解Nginx模块开发与架构解析 第2版

    《深入理解Nginx模块开发与架构解析》第二版是一本专为Nginx开发者和运维人员准备的深度学习资料。这本书旨在帮助读者全面掌握Nginx的核心原理、模块开发及系统架构,从而更好地利用Nginx进行高性能的Web服务构建。 ...

    深入理解Nginx模块开发与架构解析.

    深入理解Nginx模块开发与架构解析.深入理解Nginx模块开发与架构解析.

    Nginx模块开发指南.使用C++11和Boost程序库.罗剑锋

    《Nginx模块开发指南:使用C++11和Boost程序库》是由罗剑锋编著的一本专业书籍,主要面向对Nginx有深入兴趣并希望通过编程扩展其功能的技术人员。这本书详细介绍了如何利用现代C++11特性和Boost库来开发高效的Nginx...

    深入理解Nginx模块开发及架构解析

    深入理解Nginx模块开发及架构解析,深入理解Nginx模块开发及架构解析

    Nginx深入理解Nginx模块开发与架构解析(第2版)

    《Nginx深入理解Nginx模块开发与架构解析(第2版)》是一本针对Nginx技术的深入解析书籍,旨在帮助读者理解和掌握Nginx的核心设计理念以及如何进行高效的模块开发。这本书是该领域经典著作的更新版本,不仅延续了前一...

    深入理解Nginx模块开发与架构解析(第2版).zip

    书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识...

    深入理解Nginx模块开发与架构解析.mobi

    《深入理解Nginx模块开发与架构解析》这本书是针对Nginx web服务器进行深入学习和技术探索的专业指南。Nginx作为一个高性能、反向代理、负载均衡的HTTP和反向代理服务器,因其高效的性能和灵活的配置,在互联网行业...

    深入理解Nginx模块开发与架构解析第2版

    深入理解Nginx模块开发与架构解析第2版LinuxUnix技术丛书 mobi格式,可以下载mobi阅读器打开

    Nginx模块开发OpenResty简单使用笔记整理.zip

    **最牛**的还是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的[nginx_lua_module]可以将Lua语言嵌入到Nginx配置中,从而利用Lua极大增强了Nginx本身的编程能力,甚至可以不用配合其它脚本语言(如PHP或...

    深入理解Nginx 模块开发与架构解析-完美排版

    《深入理解Nginx模块开发与架构解析》是一本针对Nginx技术的深度解析书籍,专注于探讨Nginx的内部机制、模块开发以及整体架构。Nginx是一款高性能的Web服务器,因其反向代理、负载均衡和静态文件处理能力而广受欢迎...

Global site tag (gtag.js) - Google Analytics