• [开发记录]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
  • 相关阅读:
    【HDU6609】Find the answer【线段树】
    【HDU6602】Longest Subarray【线段树+分治】
    PCIe
    NVMe Windows 支持情况
    PCIe/NVMe Soft Protocol Analyzer
    I am coming..
    hibernate自动建表技术_采用数据库反向生成技术
    struts2的执行流程
    oracle中scott用户下四个基本表SQL语句练习
    SQL语句中的having和where的区别
  • 原文地址:https://www.cnblogs.com/Bozh/p/2594089.html
Copyright © 2020-2023  润新知