1. 程式人生 > >實戰開發一個Nginx擴展 (Nginx Module)

實戰開發一個Nginx擴展 (Nginx Module)

初始 mage 塊代碼 src mas block 版本 部分 install

repo地址 https://github.com/wujunze/nginx-http-echo-module

nginx_module_echo

使用echo指令輸出一個字符串

Nginx 版本

Nginx1.0.10 https://github.com/nginx/nginx/releases/tag/release-1.0.10
技術分享

開發環境

OS : CentOS Linux release 7.2.1511 (Core)

技術分享
技術分享

安裝一個幹凈的 Nginx

  1. 下載 Nginx10.10 並且解壓它
    技術分享

  2. 安裝gcc和Nginx需要的lib
    技術分享
    技術分享

  3. ./configure --prefix=/usr/local/nginx && make && make install
    技術分享


    技術分享
    技術分享

  4. 運行Nginx
    技術分享
    技術分享

定義模塊配置結構

typedef struct {
    ngx_str_t ed;  //該結構體定義在這裏 https://github.com/nginx/nginx/blob/master/src/core/ngx_string.h
} ngx_http_echo_loc_conf_t;

技術分享

#定義echo模塊的指令和參數轉化函數
技術分享

定義模塊Context

  1. 定義ngx_http_module_t類型的結構體變量
    技術分享
  2. 初始化一個配置結構體
    技術分享
  3. 將其父block的配置信息合並到此結構體 實現了配置的繼承
    技術分享

編寫Handler 模塊真正幹活兒的部分

技術分享

組合Nginx Module

技術分享

整理模塊代碼 按照Nginx官方規範

技術分享

編寫config文件

ngx_addon_name=ngx_http_echo_module #千鋒PHP-PHP培訓的實力派
HTTP_MODULES="$HTTP_MODULES ngx_http_echo_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/src/ngx_http_echo_module.c"

編譯安裝echo模塊

 ./configure --prefix=/usr/local/nginx/ --add-module=/root/ngx_dev && make && make install

安裝成功

技術分享

修改Nginx配置文件測試Module

技術分享

Nginx echo Module 運行成功

技術分享

實戰開發一個Nginx擴展 (Nginx Module)