实战开发一个 Nginx 扩展 (Nginx Module)
实战开发一个Nginx扩展 (Nginx Module)
如果这个repo对你有帮助 欢迎star fork
repo地址 https://github.com/wujunze/nginx-http-echo-module
nginx_module_echo
使用echo指令输出一个字符串
Nginx 版本
Nginx1.0.10 https://github.com/nginx/nginx/releases/ta...
开发环境
OS : CentOS Linux release 7.2.1511 (Core)


安装一个干净的 Nginx
-
下载 Nginx10.10 并且解压它

-
安装gcc和Nginx需要的lib


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



-
运行Nginx


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

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

定义模块Context
- 定义ngx_http_module_t类型的结构体变量

- 初始化一个配置结构体

- 将其父block的配置信息合并到此结构体 实现了配置的继承

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

组合Nginx Module

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

编写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
安装成功

修改Nginx配置文件测试Module

Nginx echo Module 运行成功

Thanks
参考文档
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
关于 LearnKu
一楼:grin:
666
不明觉厉
看不懂,但是觉得很厉害 :+1:
有啥应用场景吗?还是作为一个教程?
@Hanccc :smile:
@JokerLinly :laughing:
@overtrue 谢谢鼓励 :laughing:
@dinghua 主要是通过开发一个简单的Nginx Module来学习Nginx模块机制和Nginx模块开发
@wujunze Nginx 模块开发太累了,不如用 OpenResty,使用 Lua 语言轻松开发:open_mouth:
@Stephen 对的:smile: 生产环境建议用OpenResty ,模块丰富:thumbsup: Lua写模块不用重新编译Nginx, 本教程主要目的是通过开发一个简单的Nginx Module来学习Nginx模块机制和Nginx模块开发
对啊,有应用场景嘛 做一个扩展能干嘛?
@736713830 能学习Nginx内核 能学习网络IO模型 能学习Nginx模块机制 哈哈
@wujunze 涨姿势了........
@736713830 :blush: