nginx高效學習方法


nginx高效學習方法


    nginx做為一個高性能的web服務器,相對於apache等服務器來說它的代碼量並不是非常龐大,反而非常精簡。看過nginx源碼的人都知道,nginx將“一切皆為模塊”和“所有問題都可以通過加層的方式來解決”這兩句話體現得淋漓盡致。nginx所有功能都由一個一個模塊疊加而成,這對快速定位問題非常有用。在計算機行業中有這么一句話,計算機中的所有問題都可以通過增加中間層的方式來解決;比如linux物理內存太少不夠用,就通過增加虛擬內存這一層來解決;再比如內存訪問磁盤的速度太低,就通過增加調整緩存這一層來解決等等。nginx也是一樣通過增加中間層來解決問題,nginx的大體上分為三層,第一層由核心模塊、事件模塊,日志模塊組成,主要處理配置解析、TCP網絡事件等;第二層由http框架模塊、mail框架模塊等組成,在第一層的基礎上處理用戶的請求,解析用戶請求行、請求頭(http協議);第三層由業務模塊組成,通過獲取第二層解析的用戶請求信息進行業務處理。

    nginx是一個非常優秀的開源軟件,學習它可以提高我們編碼的能力。相信每個人都能學會nginx,只是時間問題而已,但如何發最少的時間高效的學會nginx呢?本人學習nginx已有大半個月,雖沒有完全看完nginx源代碼,但也看懂近十個模塊的源代碼。以下是本人學習nginx的一些方法。


第一步、下載nginx源代碼,在linux上編譯安裝
    能看懂configure文件的盡量學習一下,看不懂的就算了,編譯完后是知道在objs目錄下有一個ngx_modules.c文件,這文件里存有nginx模塊加載運行的順序。

第二步、用sourceInsight建立一個nginx源碼工程
    第三、四步中會用到

第三步、找一本nginx方面的電子書,按照書的流程看一遍
    入門級書中一般都會介紹一些nginx常用的配置項、nginx常用的數據結構、以及如何編寫nginx模塊等等,這些都得學會。看書是有技巧的,在看書時遇到書中對某結構體或者某函數的描述時就將描述信息寫在源代碼中對相應的結構體或函數邊,后續看代碼時就不需要再這里找那里找了。

第四步、閱讀源代碼
    書看完了,並不代表就學會了,有些細節還得通過看源代碼才能知道。閱讀源代碼不能無目的的去看,得按照ngx_modules.c文件中模塊的編譯 順序一個模塊一個模塊的去看,模塊之間總會有些依賴關系的,前一個模塊所做的工作往往后面的模塊要用到,不按模塊順序看是要付出很大代價的。由於在第三步中對一些重要的結構成員已經有描述了,此時看起代碼來就不那么困難了。源代碼至少得看兩遍,第一遍將每個模塊的源碼看一遍,知道該模塊處理了那些配置項,完成了什么功能;第二遍得從連接的角度去看,如當nginx收到用戶請求時經過那些模塊,這些模塊對它做了那些處理等。


一些比較有用的資料
    http://nginx.org/en/docs/                        //官方文檔,關於nginx的任何資料都能在這里找到,重要的是這些列出了每個模塊處理的配置項
    http://www.pagefault.info/?p=188       //nginx的啟動過程分析,這篇文章確實不錯


    以上只代表我個人的學習辦法,對某些牛人來說也許並不適合。
    漫漫江湖路,高手寂寞心。要想成為高手,是必需得要有所付出的。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM