開發記錄 Nginx模組開發 一

2022-02-09 01:40:44 字數 1110 閱讀 2391

引言:最近實習由於專案需要,為了追求穩定性加上烤魚利用nginx本身提供的優秀的基礎設施,使用了nginx提供的一些擴充套件功能來做nginx本身的開發。

nginx提供了很強的可以自己定製擴充套件功能的「外掛程式式」擴充套件,在需要加鉤子的地方構造**函式來完成相應功能(說起來容易做起來難)。

nginx可以提供三種方式的模組擴充套件:

1.handler方式處理http請求

2.filter方式對於輸出的http做過濾,可以加解密或其他功能等

3.load balancer,作為http方向**時候的負載均衡所用

由於專案原因,暫時使用的是handler方式,不過大多數場景下也是使用了handler方式

nginx處理http請求的時候,nginx模組通過讀取配置檔案的引數找到相應的鉤子函式

比如我們的模組是乙個取得日誌檔案的nginx模組,以http post方式

按照nginx模組的命名規則就是  ngx_http_get_log_module

比如在nginx模組的配置檔案  nginx/conf/nginx.conf server 段中增加如下選項

location /get_log {

get_log on;

在模組編寫完成後在 ./configure 的時候加上--add-module=/yourdir/ngx_http_get_log_module.c 選項

在模組中與 ngx_http_get_log_module.c 中編寫配置檔案config

在編譯的時候 ./configure --add-module=/yourdir/ngx_http_get_log_module

make &&make install

然後再用http方式測試,client端可以用瀏覽器或者是其他的第三方庫來做

我利用的是python的 urllib2 做http post的

開發記錄 Nginx模組開發 二

引言 nginx模組提供了upstream 上游伺服器 的非同步 處理模組開發,以memcached 模組為例 commands結構的初始化為相應的命令新增 函式,用來處理 memcached pass 這個命令 看看 ngx http memcached pass 的實現 此函式會對 conf 做...

Nginx模組開發(1) 初探模組開發流程

一 準備工作 1 安裝pcre庫 cd usr local wget tar zxvf pcre 8.38.tar.gz cd pcre 8.38 configure make make install 2.安裝zlib cd usr local wget tar zxvf zlib 1.2.8.t...

nginx的模組開發

nginx剛剛在國內開始流行的時候,我就把它引入公司技術體系,用來替代apache主要做動靜分離。nginx的併發處理能力和穩定性,以及優秀的軟體架構深深得吸引了我,讓我跨入了高效能伺服器開發的大門。正巧當時要基於flash技術開發一套 系統,而且要支援 環境,而當時並沒有什麼好的辦法讓flash通...