当前位置首页 > Nginx知识

[开发记录]Nginx模块开发(一)

阅读次数:57 次  来源:admin  发布时间:

引言:最近实习由于项目需要,为了追求稳定性加上烤鱼利用Nginx本身提供的优秀的基础设施,使用了Nginx提供的一些扩展功能来做Nginx本身的开发。

Nginx提供了很强的可以自己定制扩展功能的“插件式”扩展,在需要加钩子的地方构造回调函数来完成相应功能(说起来容易做起来难)。

Nginx可以提供三种方式的模块扩展:

1.Handler方式处理HTTP请求

2.Filter方式对于输出的HTTP做过滤,可以加解密或其他功能等

3.Load Balancer,作为HTTP方向代理时候的负载均衡所用

由于项目原因,暂时使用的是Handler方式,不过大多数场景下也是使用了Handler方式

Nginx处理HTTP请求的时候,Nginx模块通过读取配置文件的参数找到相应的钩子函数

比如我们的模块是一个取得日志文件的Nginx模块,以HTTP POST方式

按照Nginx模块的命名规则就是 ngx_http_get_log_module

比如在Nginx模块的配置文件 nginx/conf/nginx.conf server 段中增加如下选项

location /get_log {

get_log o

}

在模块编写完成后在 ./configure 的时候加上--add-module=/yourdir/ngx_http_get_log_module.c 选项

在模块中与 ngx_http_get_log_module.c 中编写配置文件config

gx_addon_name=ngx_http_get_log_module

HTTP_MODULES="$HTTP_MODULES ngx_http_get_log_module"

NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_get_log_module.c"

在编译的时候 ./configure --add-module=/yourdir/ngx_http_get_log_module

make &&make install

然后再用HTTP方式测试,client端可以用浏览器或者是其他的第三方库来做

我利用的是python的 urllib2 做HTTP POST的

上一篇:root登录到图形;Fedora12/Debian以root登录图形界面
下一篇:Linux(Fedora13)下C/C++IDE环境配置