文章概述:nginx
1、 nginx源碼之簡介服務器
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本0.1.0發佈於2004年10月4日。數據結構
代碼徹底用c語言編寫。我對於其中它對內存的分配、module框架的構建以及http實現這幾塊很是的感興趣。多線程
因爲本身的C語言至關的水,因此邊看源代碼變學習也是個不錯的過程。框架
2、 nginx之目錄的介紹函數
下載nginx源碼以後,解壓以後,根目錄下有幾個子目錄和幾個文件,最重要的子目錄是auto和src,最重要的文件是configure腳本,不一樣於絕大多數的開源代碼,nginx的 configure腳本是做者手工編寫的,沒有使用autoconf之類的工具去自動生成,configure腳本會引用auto目錄下面的腳本文件來幹活。工具
對於nginx分析,性能
configure做爲一個總驅動,調用這些腳本去生成版本信息頭文件、默認被包含的模塊的聲明代碼和Makefile文件,版本信息頭文件 (ngx_auto_config.h,ngx_auto_headers.h)和默認被包含的模塊的聲明代碼(ngx_modules.c)被放置在新 建立的objs目錄下。要注意的是,這幾個生成的文件和src下面的源代碼同樣重要。要運行一下 ./configure 在目錄文件下會獲得一個objs,這個文件夾也是至關的重要,主要包含了Makefile文件和nginx全部模塊的ngx_module.c 文件學習
對於auto目錄測試
configure腳本會引用auto目錄下面的腳本文件來幹活。根據不一樣的用途,auto目錄下面的腳本各司其職,有檢查編譯器版本的,有檢查操做系統版本的,有檢查標準庫版本的,有檢查模塊依賴狀況的,有關於安裝的,有關於初始化的,有關於多線程檢查的等等。
對於src目錄,這個是源碼存放的地方,同時也是重點。
src/core存放着主幹部分、基礎數據結構和基礎設施的源碼,main函數在src/core/nginx.c中,這是分析源碼的一個很好的起點。
src/event存放着事件驅動模型和相關模塊的源碼。
src/http存放着http server和相關模塊的源碼。
src/mail存放着郵件代理和相關模塊的源碼。
src/misc存放着C++兼容性測試和google perftools模塊的源碼。
src/os存放着依賴於操做系統實現的源碼,nginx啓動過程當中最重要的master和workers建立代碼就在這個目錄下
3、參考文獻:
網址:http://blog.csdn.net/kenbinzhang/article/details/4653202