18

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

repo地址 https://github.com/wujunze/ng...

nginx_module_echo

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

Nginx 版本

Nginx1.0.10 https://github.com/nginx/ngin...
image

开发环境

OS : CentOS Linux release 7.2.1511 (Core)

image
image

安装一个干净的 Nginx

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

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

image

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

image
image

  1. 运行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/Configu...

  2. http://tengine.taobao.org/book/

  3. http://blog.codinglabs.org/ar...

  4. https://www.nginx.com/resourc...

-------------------------我是分割线-------------------------

硬广时间(对Nginx感兴趣的童鞋可以看下)

Nginx系列课程索引

  1. 引子: WebServer与PHP通信姿势
    熟悉了解Nginx与PHP是怎么进行通信的

  2. 起手式: PHP程序猿应该知道的Nginx (上)
    如何更好的使用Nginx和Nginx配置

  3. 进阶式: PHP程序猿应该知道的Nginx (中)
    深入理解Nginx内核和Nginx运行原理,剖析Nginx高性能的秘密

  4. 实战篇: PHP程序猿应该知道的Nginx (下)
    百闻不如一run 一起来开发一个Nginx的拓展


CodeCloud
3.4k 声望1.2k 粉丝

一个程序猿,喜欢学习技术,喜欢交流技术