首頁  >  文章  >  後端開發  >  (個人開源)nginx原始碼註釋

(個人開源)nginx原始碼註釋

WBOY
WBOY原創
2016-07-29 08:59:571376瀏覽

地址

https://github.com/langsim/nginx-1.6.2-comment

簡介

希望完成一份高可讀性的nginx源碼註釋。

不會註釋的內容

  1. spdy相關程式碼,因為spdy已經被http2取代.
  2. 線程相關程式碼,因為至少在1.6.2版本nginx的線程還處在實驗性階段.
  3. linux之外其他平台的程式碼.
  4. epoll以外其他事件模型的程式碼
  5. gcc以外其他編譯器的程式碼.
  6. mail相關的程式碼.

完成程度

  1. core目錄60%
  2. 完成程度
  3. core目錄60%%
http目錄10%

os目錄80%
  1. 函數鍊錶
http filter模組之間,ngx_http_top_header_filter和ngx_http_top_body_filter模組之間,ngx_http_top_header_filter和ngx_http_top_body_filter模組會形成兩個函數的對應函數表順序相反。

http請求處理的11個階段中很多階段都可以多個回調函數,同一個階段的回調函數之間調用順序和對應模組在ngx_modules數組裡的順序相同。 

    日誌
  1. nginx預設有兩個log檔:
access.log: 每一個http請求都會在裡面產生一行記錄。

error.log: nginx運行時的一些常規,錯誤或調試日誌。

    進程模型
  1. nginx啟動後可能出現四種進程狀態:
  2. 單進程前台運行
  3. 單進程守護程序模式
      一個masterer,一個(或多個)worker個)cachemanager進程和一個(或0個)cacheloader進程共同在前台運行
    • 一個master進程,一個(或多個)worker進程,一個(或0個)cachemanager進程和一個(或0個)cacheloader進程在守護程式狀態下運行。
    • master進程在啟動是用於啟動其他進程,啟動完成後用於管理其他進程。
    • woker進程,用於實際處理連結請求。
    cachemanager進程用於依要求清理cache檔案。
  4. cacheloader進程在啟動時會將cache目錄裡符合條件的cache檔案在記憶體裡建立索引,不符合要求的cache檔案清除,然後退出。

啟動後給正在運行的nginx的主程序發送訊號,然後退出。
  1. 進程運行狀態的切換
重載設定檔(reload)

熱升級可執行檔

編譯

    nginx的編譯方式與linux平台
  1. 編譯
  2. nginx的編譯與linux平台都執行原始碼configure && make && make install, 在./configure後可加入自己的自訂選項。
  3. nginx使用訊號
  4. TERM, INT 快速關閉
  5. QUIT 從容關閉
HUP 平滑重啟,重新載入設定檔

USR1 重新開啟檔案,在升級可執行大文件,在升級時可平滑程式

WINCH 從容關閉工作進程
  1. nginx記憶體池
  2. nginx有兩個記憶體池

在共享記憶體上分配記憶體用的記憶體池
  1. 在普通記憶體上申請記憶體的記憶體池高效率的利用記憶體
  2. nginx使用到的計算hash演算法
  3. crc32
  4. crc16
sha1

murmurhash
  1. sha1
  2. murmurh
  3. 訊號
unix套接字

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i

').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了(個人開源)nginx原始碼註釋,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜 🎜 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn