原创 從nginx角度看服務器多進程模型設計(二)

在ngx_master_process_cycle中要處理衆多的全局變量,正是通過一些信號處理函數設置這些變量,纔會後面檢測到一些事件的發生。我們來看看都有哪些預定義的事件,以及他們是如何被處理的。 多數的事件來自於nginx的用戶,

原创 關於nginx配置解析中merge操作的探討

我們先來看看http module的類型的結構體: typedef struct {     ngx_int_t   (*preconfiguration)(ngx_conf_t *cf);     ngx_int_t   (*post

原创 從nginx角度看服務器多進程模型設計(一)

多進程你可能很熟悉,也許有一套自己的使用習慣和方法。這東西沒有什麼權威建議,書上只是給出了基本知識點,至於具體怎麼去用,因人而異。nginx在多進程設計方面有很多值得學習和借鑑的東西,我認爲是一套比較好的實現方案。你也許認爲這東西很簡單

原创 研究技術要多多思考

    我們知道一個新知識在大腦中生根發芽,其實是一個跟以往知識發生聯繫的過程,爲什麼死記硬背容易忘記?道理是很簡單的,孤島從來都是大腦中遺忘對象的最佳候選,做爲一個跟以往經驗發生交互和連接的新知識,從生理學的角度來講,在突觸的連接數量

原创 nginx中rewrite模塊break和last原理詳解

在使用nginx重寫(即rewrite)機制時,大家一般會用到last和break,關於這兩個指令的作用,網友問的挺多,網上的討論也挺多,這裏做個總結: 網友的給力解釋: last:     重新將rewrite後的地址在server標

原创 linux內核調試環境的搭建(使用qemu)

這裏說明下,本人調試的內核版本是2.6.11.12,爲什麼去調試這麼“古老”的版本?原因不多說了,你手頭也許正拿着ULK3,而它針對的內核版本正是2.6.11,有比這更好的理由嗎?而且這個版本不算舊,已不算新,我認爲還算不錯,想想

原创 關於nginx中的四級指針

在nginx中有個四級指針,void **** conf_ctx,那麼這個四級的指針在什麼情況下用到呢? 答案可以在events block中找到。 在處理events這個指令時,它在conf_ctx中某個地方佔住一個位置(指針看成數組

原创 使用kbuild構建bzImage內核映像

這裏通過以下三個最經典的步驟來分析下,一個bzImage內核映像是如何配置編譯,並最終安裝使用的。當然在整個內核構建過程中,還支持許多的特性,相信這個經典過程明確之後,分析其他的情況就不會太難了,這裏以x86體系來做分析。分析版本2.6

原创 nginx中事件模型中instance變量的處理細節

nginx事件模型中的instance變量,實際上是爲了處理使用epoll時,可能出現的所謂“stale event”,先看下man的解釋。   man 7 epoll: /* If you use an event ca

原创 再談nginx變量(一)

這裏以ngx_http_script_compile爲線索,看一下nginx的變量原理中還有哪些值得挖掘的地方。 ngx_http_script_compile函數被調用,一般都是用來處理變量的,特別是在配置處理階段,出現變量的時候(即

原创 再談nginx變量(二)

nginx中除了一些內建變量,自定義變量(通過set指令定義的),還有一類比較特別的變量,我稱它們爲特殊前綴變量,這類變量多數在內建變量數組內是找不到的,形式可以分一下幾類: $http_xxx, $sent_http_xxx, $up

原创 緩存服務器設計與實現(一)

    這裏我們nginx的cache系統爲線索,來探討一個緩存服務器的設計和相關細節,我儘量站在設計和框架的角度來分析,限於篇幅這裏不再去擼代碼了,相關的細節,歡迎大家一起參與討論。     一個cache服務器中從後端取得文件之後

原创 關於內核學習的一些個人看法!

    今天必須吐槽一下!     我有個搞內核的同事說過:對現在的新人來說,內核的學習曲線越來越陡了,不知道搞內核的這些前輩退休以後,後輩能否扛起內核這個重擔。。。開始的時候還不以爲然,隨着這幾天陸續接觸內核代碼,才深刻的體會到這句話

原创 nginx中hash表的設計與實現

    在nginx中使用的hash中一個非常核心的函數就是ngx_hash_init,由於nginx這個hash表是靜態只讀的,即不能在運行時動態添加新元素的,一切的結構和數據都在配置初始化的時候就已經規劃完畢,所以“init”過程的

原创 困擾nginx初學者的兩個小問題

通過在羣裏大家的討論,我總結了兩點問題,很多初學者都問過: 1. ngixn事件處理中關於active和ready的問題 2. ngx_connection_t與ngx_http_connection_t結構的區別與聯繫 這裏分開討論下