nginx模块编程学习笔记1

这两天在做nginx的模块测试,想做一个可以把记录数据,以日志的形式直接写入到redis数据库中。
之前只是照猫画虎的写过nginx的模块,都是测试玩以下,这次想写个有用一点的(其实这个东西也不一定有用,先写再说)。
结果出现一个很异常的情况,也是我对nginx模块熟悉的不够,结果把filter的的模块加到处理模块的变量种–HTTP_MODULES,导致我的filter模块死活是不工作。这里整理了一下:
模块分为: 1.处理模块, 2.过滤模块, 3均衡负载模块
1.处理模块:得到输入后,直接控制输出最终结果
在指令回调函数处进行注册,命令模块主要使用ngx_command_t来进行命令的处理。

配置文件种conf中配置HTTP_MODULES

这里一定要这样写才起作用

HTTP_MODULES=”$HTTP_MODULES ngx_xlog_module”

这里指定要编译的文件
NGX_ADDON_SRCS=”$NGX_ADDON_SRCS $ngx_addon_dir/ngx_xlog_module.c $ngx_addon_dir/test.c”

这里指定编译需要的额外的库或是头文件
CORE_LIBS=”$CORE_LIBS -L$ngx_addon_dir/../lib/ -lxlog -lm -ldl”
CORE_INCS=”$CORE_INCS $ngx_addon_dir/../include”

过滤模块:得到输入后,进行变换,传递给下一个filter依次处理
在上下文种postconfiguration种注册
在配置文件种要指名这是过滤模块,模块列表名–HTTP_AUX_FILTER_MODULES
而这里要这样写
HTTP_AUX_FILTER_MODULES=”$HTTP_AUX_FILTER_MODULES ngx_xlog_redis”
其实在auto/modules文件中这样定义的,所以,这里的filter模块应该会有很多种
$HTTP_MODULES $HTTP_FILTER_MODULES \
$HTTP_HEADERS_FILTER_MODULE \
$HTTP_AUX_FILTER_MODULES \
$HTTP_COPY_FILTER_MODULE \
$HTTP_RANGE_BODY_FILTER_MODULE \
$HTTP_NOT_MODIFIED_FILTER_MODULE”