实战开发一个 Nginx 扩展 (Nginx Module)

本贴最后更新于 2678 天前,其中的信息可能已经渤澥桑田

完整代码地址 https://github.com/wujunze/nginx-http-echo-module (欢迎 star fork 提 PR)

nginx_module_echo

使用 echo 指令输出一个字符串

Nginx 版本

Nginx1.0.10 https://github.com/nginx/nginx/releases/tag/release-1.0.10
image

开发环境

OS : CentOS Linux release 7.2.1511 (Core)

image
image

安装一个干净的 Nginx

  1. 下载 Nginx10.10 并且解压它
    image

  2. 安装 gcc 和 Nginx 需要的 lib
    image
    image

  3. ./configure --prefix=/usr/local/nginx && make && make install
    image
    image
    image

  4. 运行 Nginx
    image
    image

定义模块配置结构

typedef struct {
    ngx_str_t ed;  //该结构体定义在这里 https://github.com/nginx/nginx/blob/master/src/core/ngx_string.h
} ngx_http_echo_loc_conf_t;

image

#定义 echo 模块的指令和参数转化函数
image

定义模块 Context

  1. 定义 ngx_http_module_t 类型的结构体变量
    image
  2. 初始化一个配置结构体
    image
  3. 将其父 block 的配置信息合并到此结构体 实现了配置的继承
    image

编写 Handler 模块真正干活儿的部分

image

组合 Nginx Module

image

整理模块代码 按照 Nginx 官方规范

image

编写 config 文件

ngx_addon_name=ngx_http_echo_module
HTTP_MODULES="$HTTP_MODULES ngx_http_echo_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_echo_module.c"

编译安装 echo 模块

 ./configure --prefix=/usr/local/nginx/ --add-module=/root/ngx_dev && make && make install

安装成功

image

修改 Nginx 配置文件测试 Module

image

Nginx echo Module 运行成功

image

如果这个 repo 对你有帮助 欢迎 star fork Thanks

参考文档

  1. http://wiki.nginx.org/Configuration
  2. http://tengine.taobao.org/book/
  3. http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html
  4. https://www.nginx.com/resources/wiki/modules/
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • alanfans 1

    2l,这个有用,收藏