nginx模块编程学习笔记1

| 2012年10月23日

这两天在做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"
看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务