上一章對Nginx的架構有了一個初步的了解。這章,為了對源碼仔細的剖析,先要對Nginx的源碼結構有一個了解。從宏觀上把握源碼模塊的結構。
一.nginx源碼的3個目錄結構
在安裝的nginx的目錄下,有一個目錄src,這里邊存放了nginx的所有源代碼,包括:core,event, http, mail,misc,os
其中
1)mai目錄中存放了實現Nginx服務器的郵件服務的源碼,主要實現對郵件服務依賴的數據結構的定義和初始化,像SMTP, POP3, IMAP, SSL的支持
2)misc目錄中存放了兩個文件:ngx_cpp_test_module.cpp文件實現的功能是測試程序中引用的頭文件是否與C++兼容;
ngx_google_perftools_module.c文件是用來支持Google PerTools的使用的。
3)os目錄其中包含一個Unix目錄,存放的是針對“類unix系統“,像Solaris等情況;
4)core目錄,event目錄,http目錄是重點;
####三個目錄簡單的情況####
(1)core目錄
這個目錄中存放了nginx的關鍵數據結構和內核源碼實現
在這個目錄中還包括Ngx_cycle.*文件, ngx_log.*文件, ngx_string.*文件,ngx_array.*, ngx_list.*, ngx_hash.*等和一些重要的內存管理的源碼。
(2)event目錄
這個目錄里包含Nginx服務器的事件驅動模型,實現了nginx服務器的消息機制。在modules目錄下包括:AIO, epoll, kqueue, rtsig等。
(3)http目錄
該目錄下的源碼為Nginx服務器提供了web服務提供了主要支持。
二.Nginx源碼的模塊化結構
為了使清楚的了解nginx的源碼結構,分成了8個模塊;
(1)公共功能部分
(2)內存管理
這部分實現了Nginx服務器的內存管理,包括內存池的管理,公共內存的分配,緩存區的管理等
(3)事件驅動
(4)日志管理
(5)Http服務
(6)mail服務
(7)模塊支持
綜上,把nginx的基本源碼用圖形的形式表示出來,可以更加清楚了解結構。
參考《Nginx高性能Web服務器詳解》