標籤:

如何解讀Nginx源碼?


前提:

1、首先nginx是C語言編寫的,你必須知識要有C語言的編程基礎,否則很痛苦

2、了解web伺服器,反向代理的基本知識,以及HTTP協議,TCP/IP協議的基本知識

如果你已經有豐富的經驗,或者是大牛,那前面的前提就是廢話,可以略過。

看源碼準備:

1、找官網,找貢獻者的博客去了解NGINX是做什麼的,有什麼特性,性能,功能,架構等

2、下載源代碼,從分析main函數開始,大致了解啟動流程,初始化以及一些程序的啟動準備

3、建議找到request邏輯,分析下對請求的整個處理流程,不用很細,慢慢來,一口吃不了大胖子,有問題就先記上再說

4、根據分析request的經驗,拓展分析下nginx的模塊,處理鏈,以及封裝的數據結構如ngx_str_t,ngx_event_t等數據結構

5、到網上找個例子,自己動手去寫個模塊,或修改某個處理邏輯,你一定會遇到問題,這時你可以通過GDB等工具進行分析和調試,這樣加深了你的理解

6、動手寫代碼,看源碼,調試,重複這個過程。

其他

多在網路上找資源和志同道和的技術愛好者或牛人,多交流溝通。

堅持一年,你會有突飛猛進的成績。good luck


貼鏈接不扣友善度的吧?

畢業生應該具有的基本素養


我去年確實是從0基礎看nginx的,首先買了本《深入理解nginx》大概看了一遍,你知道和看天書一樣一樣的。然後下載了代碼,邊看代碼邊看書。看的過程中把數據結構畫下來,錯綜複雜。把函數調用畫下來,也是錯綜複雜。畫的畫的就清晰了,現在再看書清晰多了。鏈接是我畫的其中的一個圖,到目前沒看一次還是對照著看,然後更新。 百度腦圖-便捷的思維工具 。 數據結構一直沒有找到合適的畫圖軟體。


可以先看看諸如:Nginx開發從入門到精通 之類的基礎性、概述性的東西,對其總體架構、常用的數據結構和常用的功能函數有了了解之後,再深入其中的具體的流程、函數。邊開發邊學。沒有想像中難。


個人的做法是,先看基礎數據結構。然後再看基本事件驅動流程(如從接收到一個HTTP請求,再到它的處理,最後返回),最好多嘗試在裡面加上一些log代碼,以驗證自己的想法是否正確,藉助於doxywizard來生成函數調用圖是一個很有用且很直觀的方式,可以理清自己的很多疑問,畢竟一大堆調用自己有時候看著也會糊塗。


dsaasd


推薦閱讀:

被頻繁攻擊訪問,nginx如何破解?
假如有一張100W左右數據的表,根據查詢條件進行分頁。如何分頁?
為什麼中國程序員對待外國人抱怨和對待國人抱怨採取截然不同的態度?
為什麼考慮到溢出用減法來比較更好?

TAG:Nginx |