nginx實現簡單模組開發

2021-07-03 16:37:00 字數 3788 閱讀 6719

需要的預備知識不多,有如下幾點:

有過一些 c 語言的程式設計經歷;

知道 nginx 是幹嘛的,並有過編寫或改寫 nginx 的配置檔案的經歷。

ok,就這兩點就夠了 :)

好了,那就開始吧~

我們的目標,就是你在瀏覽器裡輸入http://localhost/hello_world時,顯示:

hello world
當然,為了能夠更加自定義一些,我們嘗試在hello world後面再顯示乙個字串,比如:

hello world, poechant
那麼我們的配置檔案看起來是什麼樣的呢?

}}是的,很簡單吧,唯一特別的部分,就是:

location /hello_world
首先要明確,我們的檔案和目錄結構:

|_____________config其中ngx_http_hello_world_module.c是模組的 c 原始碼檔案,config是模組的配置檔案。

定義乙個結構體:

typedef struct  ngx_http_hello_world_loc_conf_t;
定義三個變數:

ngx_module_t ngx_http_hello_world_module = ;定義三個函式:

static char* ngx_http_hello_world_merge_loc_conf(ngx_conf_t* cf, void* parent, void* child)完整的程式如下:

ngx_addon_srcs="$ngx_addon_srcs $ngx_addon_dir/ngx_http_hello_world_module.c"最開始已經展示過了,就是它。

$ ./configure --add-module=/usr/local/nginx/ngx_http_hello_world_module (這個根據自己目錄設定就可以了)

make

如果沒有任何錯誤提示的話,那麼恭喜你,你的模組編譯通過了!

然後執行 nginx。如果沒有任何錯誤提示的話,再次恭喜你,你的模組已經被正常載入執行了!

http://localhost/hello_world
你應該會看到:

hello_world, poechant
這個簡單模組的詳細解釋,在該系列博文的第

二、三、四篇中。

一般來說,剛入門做某件事情的時候,我們不大想聽廢話,希望趕緊開始上手幹活,否則會覺得很空洞。這也是為什麼我一開始就上了乙個例子,並給出**。但是還是要了解一些「空話」,才有助於理解。

nginx 處理請求的過程,是在請求收到後定位到配置檔案中描述的相應 location,然後由 handler 生成 response,再由 filter 進行處理。所以模組開發,可以是 handler 模組開發,也可以是 filter 模組開發(當然還有其他型別的模組)。

python模組化程式設計與簡單模組實現

首先分清楚模組和包的區別 模組化程式設計設計概念 模組的api 模組化程式設計的原則是先設計api,然後實現api,最後在客戶端中匯入和使用這些函式和類。可以通過help函式檢視模組的api 模組設計的一般原則 先設計api,再實現模組 控制模組規模,只提供需要的函式,降低複雜性 在模組中編寫測試 ...

RequireJs打包簡單模組打包

本文講解的是requirejs對檔案合併與壓縮的實現方法。requirejs提供了乙個打包與壓縮工具r.js,r.js的壓縮工具使用uglifyjs進行壓縮的。requirejs對互相依賴模組進行合併與壓縮,可以對js,css壓縮,甚至可以對整個專案進行打包。r.js是基於nodejs的,所以本機電...

實現選單模組功能(四)

建立包含上述學生資訊的檔案 student.data 並輸出學生資訊 將學生資訊檔案 student.data 資料讀到乙個陣列s中,統計學生個數,將陣列s按學號從小到大排序後輸出到螢幕和檔案 s no.data 中。將學生資訊從陣列s中拷貝到陣列s name中,將s name按姓名排序後輸出到螢幕...