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

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

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

nginx_module_echo

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

Nginx 版本

Nginx1.0.10 https://github.com/nginx/nginx/releases/tag/release-1.0.10
imagegit

開發環境

OS : CentOS Linux release 7.2.1511 (Core)

image
image

安裝一個乾淨的 Nginx

  1. 下載 Nginx10.10 而且解壓它
    imagegithub

  2. 安裝gcc和Nginx須要的lib
    image
    image函數

  3. ./configure --prefix=/usr/local/nginx && make && make install
    image
    image
    image測試

  4. 運行Nginx
    image
    imagespa

定義模塊配置結構

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

image

#定義echo模塊的指令和參數轉化函數
image3d

定義模塊Context

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

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

image

組合Nginx Module

image

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

image

編寫config文件

ngx_addon_name=ngx_http_echo_module
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

安裝成功

image

修改Nginx配置文件測試Module

image

Nginx echo Module 運行成功

image

千鋒PHP-PHP培訓的實力派code

相關文章
相關標籤/搜索