Nginx开发从入门到精通
Nginx開發(fā)從入門到精通
緣起
nginx由于出色的性能,在世界范圍內(nèi)受到了越來越多人的關(guān)注,在淘寶內(nèi)部它更是被廣泛的使用,眾多的開發(fā)以及運維同學(xué)都迫切的想要了解nginx模塊的開發(fā)以及它的內(nèi)部原理,但是國內(nèi)卻沒有一本關(guān)于這方面的書,源于此我們決定自己來寫一本。本書的作者為淘寶核心系統(tǒng)服務(wù)器平臺組的成員,本書寫作的思路是從模塊開發(fā)逐漸過渡到nginx原理剖析。書籍的內(nèi)容會定期在這里更新,歡迎大家提出寶貴意見,不管是本書的內(nèi)容問題,還是字詞錯誤,都?xì)g迎大家提交issue(章節(jié)標(biāo)題的左側(cè)有評注按鈕),我們會及時的跟進(jìn)。
更新歷史
| 2012/03/01 | 創(chuàng)建目錄大綱 |
| 2012/03/28 | 增加了樣章 |
| 2012/05/25 | 更新樣章 |
| 2012/06/08 | 增加第5章 |
| 2012/06/11 | 增加第4章 |
| 2012/06/26 | 增加第6章(event module) |
| 2012/06/27 | 更新第5章部分內(nèi)容 |
| 2012/07/04 | 更新第6章event module部分內(nèi)容 |
| 2012/07/12 | 增加第12章(請求頭讀取,subrequest解析) |
| 2012/08/14 | 增加第2章(nginx基礎(chǔ)架構(gòu)及基礎(chǔ)概念) |
| 2012/08/14 | 增加第2章(ngx_str_t數(shù)據(jù)結(jié)構(gòu)介紹) |
| 2012/08/17 | 增加第7章(模塊開發(fā)高級篇之變量) |
| 2012/08/25 | 增加第11章(nginx的啟動階段部分內(nèi)容) |
| 2012/09/26 | 增加第2章(ngx_array_t,ngx_hash_t及ngx_pool_t介紹) |
| 2012/10/08 | 增加第11章(配置解析綜述) |
| 2012/10/12 | 增加第2章(ngx_hash_wildcard_t,ngx_hash_combined_t及ngx_hash_keys_arrays_t介紹) |
| 2012/10/21 | 增加第2章(ngx_chain_t,ngx_list_t及ngx_buf_t介紹) |
| 2012/11/09 | 增加第12章(請求體的讀取和丟棄解析) |
| 2012/11/24 | 更新第2章(ngx_buf_t的部分字段以及其他一些書寫錯誤和表達(dá)) |
| 2012/12/18 | 更新第11章(解析http塊) |
| 2012/12/10 | 增加第3章的內(nèi)容 |
| 2012/12/28 | 補充和完善了第3章的內(nèi)容 |
| 2013/01/25 | 增加了第2章(nginx的配置系統(tǒng)) |
| 2013/02/18 | 增加了第2章(nginx的模塊化體系結(jié)構(gòu), nginx的請求處理) |
| 2013/03/05 | 增加了第12章部分內(nèi)容(多階段請求處理) |
| 2013/03/08 | 完成第11章第1節(jié)(配置解析綜述、ngx_http_block) |
| 2013/04/16 | 完成第9章第1節(jié)(源碼目錄結(jié)構(gòu)、configure原理) |
| 2013/09/30 | 完成第12章部分內(nèi)容(多階段執(zhí)行鏈各個階段解析) |
| 2013/10/11 | 完成第12章部分內(nèi)容(filter解析) |
| 2013/10/11 | 完成第12章部分內(nèi)容(ssl解析) |
版權(quán)申明
本書的著作權(quán)歸作者淘寶核心系統(tǒng)服務(wù)器平臺組成員所有。你可以:
- 下載、保存以及打印本書
- 網(wǎng)絡(luò)鏈接、轉(zhuǎn)載本書的部分或者全部內(nèi)容,但是必須在明顯處提供讀者訪問本書發(fā)布網(wǎng)站的鏈接
- 在你的程序中任意使用本書所附的程序代碼,但是由本書的程序所引起的任何問題,作者不承擔(dān)任何責(zé)任
你不可以:
- 以任何形式出售本書的電子版或者打印版
- 擅自印刷、出版本書
- 以紙媒出版為目的,改寫、改編以及摘抄本書的內(nèi)容
目錄
- 上篇:nginx模塊開發(fā)篇
- 背景介紹
- nginx歷史
- 使用簡介
- nginx特點介紹
- nginx平臺初探(100%)
- 初探nginx架構(gòu)(100%)
- nginx基礎(chǔ)概念(100%)
- connection
- request
- 基本數(shù)據(jù)結(jié)構(gòu)(99%)
- ngx_str_t(100%)
- ngx_pool_t(100%)
- ngx_array_t(100%)
- ngx_hash_t(100%)
- ngx_hash_wildcard_t(100%)
- ngx_hash_combined_t(100%)
- ngx_hash_keys_arrays_t(100%)
- ngx_chain_t(100%)
- ngx_buf_t(99%)
- ngx_list_t(100%)
- ngx_queue_t(100%)
- nginx的配置系統(tǒng)(100%)
- 指令概述
- 指令參數(shù)
- 指令上下文
- nginx的模塊化體系結(jié)構(gòu)
- 模塊概述
- 模塊的分類
- nginx的請求處理
- 請求的處理流程
- handler模塊(100%)
- handler模塊簡介
- 模塊的基本結(jié)構(gòu)
- 模塊配置結(jié)構(gòu)
- 模塊配置指令
- 模塊上下文結(jié)構(gòu)
- 模塊的定義
- handler模塊的基本結(jié)構(gòu)
- handler模塊的掛載
- 按處理階段掛載
- 按需掛載
- handler的編寫步驟
- 示例: hello handler 模塊
- handler模塊的編譯和使用
- config文件的編寫
- 編譯
- 使用
- 更多handler模塊示例分析
- http access module
- http static module
- http log module
- 過濾模塊 (90%)
- 過濾模塊簡介 (90%)
- 執(zhí)行時間和內(nèi)容 (90%)
- 執(zhí)行順序 (90%)
- 模塊編譯 (90%)
- 過濾模塊的分析 (90%)
- 相關(guān)結(jié)構(gòu)體 (90%)
- 響應(yīng)頭過濾函數(shù) (90%)
- 響應(yīng)體過濾函數(shù) (90%)
- 過濾模塊簡介 (90%)
- upstream模塊
- upstream模塊 (100%)
- upstream模塊接口
- memcached模塊分析
- 本節(jié)回顧
- 負(fù)載均衡模塊 (100%)
- 配置
- 指令
- 鉤子
- 初始化配置
- 初始化請求
- peer.get和peer.free回調(diào)函數(shù)
- 本節(jié)回顧
- upstream模塊 (100%)
- 其他模塊 (40%)
- core模塊 (40%)
- Nginx的啟動模塊 (40%)
- event模塊 (40%)
- event的類型和功能 (40%)
- accept鎖 (40%)
- 定時器 (40%)
- mail模塊
- mail模塊的實現(xiàn)
- mail模塊的功能
- core模塊 (40%)
- 模塊開發(fā)高級篇(30%)
- 變量(80%)
- 綜述
- 創(chuàng)建變量
- 使用變量
- upstream
- 使用subrequest訪問upstream
- 超越upstream
- 使用lua模塊
- 變量(80%)
- 背景介紹
- 下篇:nginx原理解析篇
- 高性能服務(wù)器設(shè)計
- c10k問題
- 高性能服務(wù)器編寫的關(guān)鍵原則
- 事件驅(qū)動的核心引擎
- 定時器管理
- nginx架構(gòu)詳解(50%)
- nginx的源碼目錄結(jié)構(gòu)(100%)
- nginx的configure原理(100%)
- auto腳本
- 模塊編譯順序
- nginx的事件機制
- event框架及非阻塞模型
- 定時器實現(xiàn)
- 信號處理
- 驚群問題
- nginx的進(jìn)程機制
- master進(jìn)程
- worker進(jìn)程
- 進(jìn)程間通訊
- nginx基礎(chǔ)設(shè)施
- 內(nèi)存池
- 簡介:
- 結(jié)構(gòu):
- 實現(xiàn):
- 共享內(nèi)存
- slab算法
- buffer管理
- buffer重用機制
- buffer防拷貝機制
- chain管理
- chain重用機制
- aio原理
- 鎖實現(xiàn)
- 基本數(shù)據(jù)結(jié)構(gòu)
- 時間緩存
- 文件緩存
- log機制
- 內(nèi)存池
- nginx的啟動階段 (30%)
- 概述 (100%)
- 共有流程 (100%)
- 配置解析接口 (100%)
- 配置解析
- 通用過程 (100%)
- http的解析
- server的管理
- location的管理
- 模塊初始化
- 熱代碼部署
- reload過程解析
- upgrade過程解析
- nginx的請求處理階段 (90%)
- 接收請求流程 (99%)
- http請求格式簡介 (99%)
- 請求頭讀取 (99%)
- 請求體讀取(100%)
- 多階段處理請求
- 多階段執(zhí)行鏈
- POST_READ階段
- SERVER_REWRITE階段
- FIND_CONFIG階段
- REWRITE階段
- POST_REWRITE階段
- PREACCESS階段
- ACCESS階段
- POST_ACCESS階段
- TRY_FILES階段
- CONTENT階段
- LOG階段
- Nginx filter
- header filter分析
- body filter分析
- subrequest原理解析 (99%)
- https請求處理解析
- nginx支持ssl簡介
- ssl連接建立(ssl握手)
- 接收請求流程 (99%)
- nginx的upstream原理解析
- 無緩沖的處理流程
- 帶緩沖的處理流程
- subrequest訪問upstream的處理流程
- 負(fù)載均衡算法
- round-robin算法
- 基于ip的hash算法
- upstream緩存機制
- 常用upstream模塊分析
- proxy模塊
- fastcgi模塊
- nginx的script處理
- 正則表達(dá)式
- 變量
- 復(fù)雜變量
- if的處理
- 高性能服務(wù)器設(shè)計
- 附錄A 編碼風(fēng)格 (100%)
- Nginx代碼風(fēng)格圖示 (100%)
- 附錄B 常用API
- B.1 字符串操作
- B.2 讀取請求體
- B.3 操作請求頭
- B.4 取參數(shù)
- B.5 URI處理
- B.6 buffer操作
- B.7 變量操作
- B.8 日志輸出
- B.9 配置解析接口
- B.10 文件操作
- B.11 鎖操作
- 附錄C 模塊編譯,調(diào)試與測試
- C.1 編譯與安裝
- 環(huán)境要求
- 下載
- Nginx在Windows環(huán)境下安裝
- Nginx在Linux環(huán)境下安裝
- 測試
- Nginx在Windows環(huán)境下查看nginx進(jìn)程
- Nginx在Linux環(huán)境下查看nginx進(jìn)程
- C.2 調(diào)試日志
- 一,開啟調(diào)試日志:
- 二,日志級別分析:
- 三,日志格式設(shè)置:
- 四,調(diào)試日志的幾個注意點:
- C.3 使用GDB調(diào)試
- C.4 功能測試
- C.5 性能/壓力測試
- C.6 常見缺陷分析
- C.1 編譯與安裝
團隊成員
叔度 (http://blog.zhuzhaoyuan.com)
雕梁 (http://www.pagefault.info)
文景 (http://yaoweibin.cn)
李子 (http://blog.lifeibo.com)
衛(wèi)越 (http://blog.sina.com.cn/u/1929617884)
袁茁 (http://yzprofile.me)
小熊 (http://dinic.iteye.com)
吉兆 (http://jizhao.blog.chinaunix.net)
靜龍 (http://blog.csdn.net/fengmo_q)
竹權(quán) (http://weibo.com/u/2199139545)
公遠(yuǎn) (http://100continue.iteye.com/)
布可 (http://weibo.com/sifeierss)
from:?http://tengine.taobao.org/book/
總結(jié)
以上是生活随笔為你收集整理的Nginx开发从入门到精通的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat原理详解和各种集群的实现
- 下一篇: 一台电脑上同启动两个Tomcat的方式,