nginx擴充套件模組

2021-06-20 08:26:25 字數 3367 閱讀 7794

**:

url:

輸出內容為我自定義的字串,比如:」i try to **** nginx!!!」

這裡介紹以下步驟:

第一步:

建立任意乙個目錄,比如:ngx_hello

第二步:

在這個資料夾中建立乙個config檔案,內容如下:

ngx_addon_name=ngx_xtest  #這裡指定模組名稱

http_modules=」$http_modules ngx_xtest」 #指定編譯後檔名稱

ngx_addon_srcs=」$ngx_addon_srcs $ngx_addon_dir/ngx_xtest.c」  #指定原始檔,這裡我只有乙個檔案多個檔案就要全部寫上去

core_libs=」$core_libs 」 #這裡指定編譯的nginx庫,這變數是由編譯nginx的時候makefile傳遞過來的,上面的幾個變數也是一樣

第三步:

建立ngx_xtest.c檔案,內容如下,也寫了簡單的注釋

//引用nginx標頭檔案,我們這個測試檔案就乙個沒有其它的測試檔案,所以也沒有引用其它的標頭檔案。

#include

#include

#include

char* ngx_xtest_setup(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);

u_char ngx_xtest_string = 「i try to **** nginx !!!」;

//這個事命令組,這裡我們可以寫多個命令,以陣列的形式存在

static ngx_command_t ngx_xtest_commands =

,ngx_null_command

};//這個陣列必須以ngx_null_command結尾

//這個是用來處理配置檔案的,這裡我們使用系統的預設配置檔案處理

//這個才是真正的模組。

ngx_module_t ngx_xtest = ;//例項化模組物件

//hello命令的真正處理函式,引數是ngx_http_request_t即乙個請求

//此函式實現的也是基本處理流程

//輸出快取附加到輸出鍊錶上

/* attach buffer to the buffer chain */

out.buf = b;

out.next = null;

//填寫輸出快取內容

/* adjust the pointers of the buffer */

b->pos = ngx_xtest_string;  /* the begin offset of the buffer */

b->last = ngx_xtest_string + sizeof(ngx_xtest_string) – 1; /* the end offset of the buffer */

b->memory = 1;    /* this buffer is in memory */

b->last_buf = 1;  /* this is the last buffer in the buffer chain */

/* 設定http返回碼 */

//傳送http報頭

//輸出內容

}//實現hello命令的初始化函式,此函式指定命令的真正處理函式為ngx_xtest_handler

char* ngx_xtest_setup(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)

第四步:編譯安轉

在編譯時需要加入–add-module=/path

$./configure –prefix=/usr/local/nginx –add-module=/data/babycode/nginx/ngx_xmodule/ –with-debug

$make

#make install

第五步:修改配置

配置檔案—nginx.conf

location /hello

第六步:執行測試

#/usr/local/nginx/sbin/nginx

測試在瀏覽器中輸入:

瀏覽器中會出現」i try to **** nginx !!!」,則表示執行成功拉。。。

(1)修改nginx源**目錄下子目錄/auto/cc中的conf檔案,將ngx_compile_opt="-c"改為ngx_compile_opt="-c -g"

(2)在編譯的時候加上debug選項,nginx的安裝指令碼如下:

(3)修改安裝完畢之後生成的nginx配置檔案:nginx.conf,加入

error_log              /export/lx/servers/nginx_debug/logs/error.log  debug;配置項

如果是做模組開發,則需要將nginx設定為單程序模式才可以除錯開發的模組中的**

加入如下幾句配置項:

worker_processes  1; 

master_process  off;             #  單程序模式

daemon          off; 

(4)進入/export/lx/servers/nginx-debug/sbin 輸入命令gdb ./nginx 即可進行nginx的除錯

Nginx新增Lua擴充套件模組

nginx安裝目錄 with http ssl module 支援 ssl with http stub status module nginx狀態模組 add module usr local src ngx devel kit 0.3.0 lua模組 add module usr local s...

Nginx事件模組

這是事件模組都必須實現的介面。typedef struct ngx event module t typedef struct ngx event actions t typedef struct ngx event s ngx event t struct ngx event s 其中的最核心的是...

nginx模組講解

一 編譯安裝 nginx的http stub status module監控其執行狀態 步驟 1 編譯nginx,加上引數 with http stub status module 2 修改nginx配置檔案,新增監控狀態配置,在nginx.conf的server塊中新增如下 location ng...