nginx高效學習方法

nginx高效學習方法 linux


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

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


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

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

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

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


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


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

相關文章
相關標籤/搜索