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

完整代碼地址 github.com/wujunze/ngi… (歡迎star fork 提PR)

nginx_module_echo

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

Nginx 版本

Nginx1.0.10 github.com/nginx/nginx…
nginx

image
image

開發環境

OS : CentOS Linux release 7.2.1511 (Core)複製代碼

image
image

image
image

安裝一個乾淨的 Nginx

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

    image
    image

  2. 安裝gcc和Nginx須要的lib
    github

    image
    image

    image
    image

  3. ./configure --prefix=/usr/local/nginx && make && make install
    shell

    image
    image

    image
    image

    image
    image

  4. 運行Nginx
    image
    image

    image
    image

定義模塊配置結構

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
image

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

image
image

定義模塊Context

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

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

image
image

組合Nginx Module

image
image

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

image
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
image

修改Nginx配置文件測試Module

image
image

Nginx echo Module 運行成功

image
image

若是這個repo對你有幫助 歡迎star fork Thanks

參考文檔

  1. wiki.nginx.org/Configurati…
  2. tengine.taobao.org/book/
  3. blog.codinglabs.org/articles/in…
  4. www.nginx.com/resources/w…
相關文章
相關標籤/搜索