zoukankan      html  css  js  c++  java
  • [开发记录]Nginx模块开发(一)

    引言:最近实习由于项目需要,为了追求稳定性加上烤鱼利用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 on;

    }

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

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

    ngx_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的

    文章属原创,转载请注明出处 联系作者: Email:zhangbolinux@sina.com QQ:513364476
  • 相关阅读:
    ORACLE MOS 翻译
    Oracle内部latch获取函数简介
    oracle cost
    oracle function dtrace
    Oracle hidden costs revealed, Part2 – Using DTrace to find why writes in SYSTEM tablespace are slower than in others
    DTrace Oracle Database
    Oracle8i Internal Services
    oceanbase 分布式数据库
    中国国家安全漏洞库
    interesting-exploit
  • 原文地址:https://www.cnblogs.com/Bozh/p/2594089.html
Copyright © 2011-2022 走看看