Nginx Http模組開發

2022-07-15 17:30:26 字數 1370 閱讀 9466

關於nginx http模組開發的文章非常少,只有emiler的那篇關於http模組的文章,但是那篇文章裡面,並沒有說到事件型的模組如何進行開發。而且文章裡面提到的內容實在是讓人有點意猶未盡。因此,對於http事件型模組的開發進行了一些總結,與大家分享。但是,無論如何,要進行nginx模組開發,最好的方法還是找到相似性較大的模組的**進行參考,多試多看。

通常,乙個http模組均是有以下的幾個部分組成:

1.模組配置結構體:(configure structure)

負責儲存配置項的內容,每一條配置項,均會生成乙個配置結構體,可以方便模組進行配置的預處理,儲存相應的結構休內容,大致結構如下:

2.模組指令( module directives ) 

static ngx_command_t ngx__commands = ,

...ngx_null_command

};

結構體如下:

struct ngx_command_t ;

3.模組上下文(the module context)

這個結構體主要定義了一系列的**函式,在不同的時期進行**

4.定義模組結構體

完成這一步之後,基本上乙個模組的基礎已經形成。

5.插入階段**函式

為了在http處理的階段中加入相應的處理函式,需要在postconfigure的**函式中進行相應的handler插入。

以下是在http_access的模組中的**:

}而ngx_http_access_handler就是在ngx_http_access_phase中插入的handler。

http在處理的過程中,總共有如下若干個階段:

如果覺得phases不夠用,可以在nginx的**中進行加入自己的階段。

這種處理方法,可以在nginx作為proxy**之前,加入自己的handler進行一些處理,相當的實用。

不同階段的處理方法不同,具體的方法可以參考ngx_http_core_module.c中的相應checker函式。

nginx HTTP過濾模組的呼叫流程

在content階段時,會生成返回給使用者的響應內容,對使用者的響應內容,實際上還要做加工處理,http過濾模組就是對響應內容做加工處理的。就是在content階段之後,log階段之前去介入請求處理 gzip filter 必須要在 copy filter模組之後。gzip filter需要對記憶體...

細述 nginx http核心模組提供的變數和解釋

ngx http core module模組在處理請求時,會有大量的變數,這些變數可以通過訪問日誌來記錄下來,也可以用於其它nginx模組。在我們對請求做策略如改寫等等都會使用到一些變數,順便對ngx http core module模組提供的變數總結了下,如下所示 引數名稱 注釋 arg para...

Nginx http請求 日誌

主要涉及客戶端和服務端 request 包括請求行 請求頭部 請求資料 response 包括狀態行 訊息報頭 響應正文 模擬乙個請求使用crul命令 使用 v 展現相關的請求格式 包括error.log access log nginx的錯誤日誌以及錯誤級別 訪問日誌檔案路徑,格式及相關的緩衝配置...