Nginx的HTTP模組介紹 資料結構部分

2021-07-25 03:51:07 字數 1665 閱讀 3408

1.整型的封裝

typedef intptr_t ngx_int_t;

typedef uintptr_t ngx_uint_t;

2. 字串的封裝

typedef struct ngx_str_t;

ngx_str_t只有兩個成員,data指向字串起始位址,len表示字串的有效長度。c語言中,字串一般都是以'\0'結尾,但是這裡data指向的並不一定會以'\0'結尾,所以通過len,避免越界。

3.ngx_list_t資料結構

typedef struct ngx_list_part_s ngx_list_part_t;

struct ngx_list_part_s

typedef struct ngx_list_t;

ngx_list_t 是nginx封裝的鍊錶容器。ngx_list_part_t是乙個陣列,擁有連續的記憶體,而ngx_list_t可以看成是元素為陣列的鍊錶。

ngx_list_t成員的意義:

1.last:指向鍊錶的最後乙個陣列元素;

2.part:鍊錶的首個陣列元素;

3.size:限制每乙個陣列元素的大小;

4.nalloc:表示每個ngx_list_part_t陣列的元素個數;

5.pool鍊錶中管理記憶體分配的記憶體池物件

ngx_list_part_t成員,由上面的介紹,可以看出來,每個ngx_list_part_t的容量由size和nalloc來確定

1.elts:指向陣列的起始位址;

2.nelts:表示陣列中已經使用了多少個元素;

4.ngx_table_elt_t 資料結構

typedef struct ngx_table_elt_t;

ngx_table_elt_t 有點類似於乙個key/value的儲存結構,key、value成員裡面都存放的是字串,lowcase_key指向的是全小寫的key字串。ngx_table_elt_t一般用來存放http頭部,http頭部經常是大小寫不敏感的,所以有了全小寫的lowcase_key。因為ngx_table_elt_t可以是某個雜湊表資料結構(ngx_hash_t型別)中的成員,所以hash成員可以在ngx_hash_t更快的找到相同key的ngx_table_elt_t資料。

5.ngx_buf_t 資料結構

緩衝區ngx_buf_t是nginx處理大資料的關鍵資料結構,既應用於記憶體資料也應用於磁碟資料。

typedef struct ngx_buf_s 	ngx_buf_t;

typedef struct void * ngx_buf_tag_t;

struct ngx_buf_s;

6.ngx_chain_t資料結構

typedef struct ngx_chain_s		ngx_chain_t;

struct ngx_chain_s ;

buf指向當前的ngx_buf_t緩衝區,next指向下乙個ngx_chain_t。

關於http模組先介紹到這,主要是一些資料結構的介紹,後面會再對nginx http模組處理進行介紹。

Nginx 常用模組介紹

nginx 核心模組介紹 標準的http功能模組集合 常用模組彙總 ngx http core module 包括一些核心的http引數配置,對應nginx的配置為http區塊部分 ngx http gzip module 壓縮模組,對nginx返回的資料壓縮,屬於效能優化模組 ngx http p...

nginx學習(五) http模組

一 http核心模組 1 alias 語法 alias file path directory path 預設值 no 作用域 location 該指令設定指定location使用的路徑.注意它跟 root 相似,但是不改變檔案的根路徑,僅僅是使用檔案系統路徑 比如 location i 請求 i ...

Nginx 編譯進去自己的HTTP模組

安裝nginx yum nginx install yum安裝的是編譯好的二進位制檔案和配置檔案,沒有原始檔 nginx啟動 usr sbin nginx c etc nginx nginx.conf nginx s reload sudo service nginx restart nginx關閉...