注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)網(wǎng)絡(luò)與數(shù)據(jù)通信網(wǎng)絡(luò)組建與管理深入理解Nginx:模塊開(kāi)發(fā)與架構(gòu)解析

深入理解Nginx:模塊開(kāi)發(fā)與架構(gòu)解析

深入理解Nginx:模塊開(kāi)發(fā)與架構(gòu)解析

定 價(jià):¥89.00

作 者: 陶輝 著
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)與互聯(lián)網(wǎng) 網(wǎng)絡(luò)與通信

ISBN: 9787111414780 出版時(shí)間: 2013-04-01 包裝: 平裝
開(kāi)本: 16 頁(yè)數(shù): 584 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《深入理解Nginx:模塊開(kāi)發(fā)與架構(gòu)解析》是阿里巴巴資深Nginx技術(shù)專(zhuān)家嘔心瀝血之作,是作者多年的經(jīng)驗(yàn)結(jié)晶,也是目前市場(chǎng)上唯一一本通過(guò)還原Nginx設(shè)計(jì)思想,剖析Nginx架構(gòu)來(lái)幫助讀者快速高效開(kāi)發(fā)HTTP模塊的圖書(shū)?!渡钊肜斫釴ginx:模塊開(kāi)發(fā)與架構(gòu)解析》首先通過(guò)介紹官方Nginx的基本用法和配置規(guī)則,幫助讀者了解一般Nginx模塊的用法,然后重點(diǎn)介紹如何開(kāi)發(fā)HTTP模塊(含HTTP過(guò)濾模塊)來(lái)得到定制的Nginx,其中包括開(kāi)發(fā)一個(gè)功能復(fù)雜的模塊所需要了解的各種知識(shí),如Nginx的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)、配置項(xiàng)的解析、記錄日志的工具以及upstream、subrequest的使用方法等。在此基礎(chǔ)上,綜合Nginx框架代碼分析Nginx的架構(gòu),介紹其設(shè)計(jì)理念和技巧,進(jìn)一步幫助讀者自由、有效地開(kāi)發(fā)出功能豐富、性能一流的Nginx模塊。

作者簡(jiǎn)介

  陶輝,思科后臺(tái)工程師,從事服務(wù)端開(kāi)發(fā)近十年,擅長(zhǎng)Linux分布式架構(gòu)下的海量數(shù)據(jù)處理,擅長(zhǎng)C/C++開(kāi)發(fā)的高性能高吞吐量網(wǎng)絡(luò)服務(wù),曾任思科DMS后臺(tái)架構(gòu)設(shè)計(jì)工作,曾在騰訊QQ空間后臺(tái)個(gè)人信息中心、個(gè)人檔、漂流瓶、空間日志、花藤、好友買(mǎi)賣(mài)等項(xiàng)目中擔(dān)任服務(wù)器設(shè)計(jì)與開(kāi)發(fā)工作,曾在華為中央軟件部綜合網(wǎng)管平臺(tái)擔(dān)任北向接口設(shè)計(jì)開(kāi)發(fā)工作。擁有豐富的Linux高性能服務(wù)器開(kāi)發(fā)經(jīng)驗(yàn),豐富的云存儲(chǔ)系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),目前關(guān)注云文檔管理系統(tǒng)和Nginx的再開(kāi)發(fā)。

圖書(shū)目錄

前 言
第一部分 Nginx能幫我們做什么
第1章 研究Nginx前的準(zhǔn)備工作
1.1 Nginx是什么
1.2 為什么選擇Nginx
1.3 準(zhǔn)備工作
1.3.1 Linux操作系統(tǒng)
1.3.2 使用Nginx的必備軟件
1.3.3 磁盤(pán)目錄
1.3.4 Linux內(nèi)核參數(shù)的優(yōu)化
1.3.5 獲取Nginx源碼
1.4 編譯安裝Nginx
1.5 configure詳解
1.5.1 configure的命令參數(shù)
1.5.2 configure執(zhí)行流程
1.5.3 configure生成的文件
1.6 Nginx的命令行控制
1.7 小結(jié)
第2章 Nginx的配置
2.1 運(yùn)行中的Nginx進(jìn)程間的關(guān)系
2.2 Nginx配置的通用語(yǔ)法
2.2.1 塊配置項(xiàng)
2.2.2 配置項(xiàng)的語(yǔ)法格式
2.2.3 配置項(xiàng)的注釋
2.2.4 配置項(xiàng)的單位
2.2.5 在配置中使用變量
2.3 Nginx服務(wù)的基本配置
2.3.1 用于調(diào)試進(jìn)程和定位問(wèn)題的配置項(xiàng)
2.3.2 正常運(yùn)行的配置項(xiàng)
2.3.3 優(yōu)化性能的配置項(xiàng)
2.3.4 事件類(lèi)配置項(xiàng)
2.4 用HTTP核心模塊配置一個(gè)靜態(tài)Web服務(wù)器
2.4.1 虛擬主機(jī)與請(qǐng)求的分發(fā)
2.4.2 文件路徑的定義
2.4.3 內(nèi)存及磁盤(pán)資源的分配
2.4.4 網(wǎng)絡(luò)連接的設(shè)置
2.4.5 MIME類(lèi)型的設(shè)置
2.4.6 對(duì)客戶端請(qǐng)求的限制
2.4.7 文件操作的優(yōu)化
2.4.8 對(duì)客戶端請(qǐng)求的特殊處理
2.4.9 ngx_http_core_module模塊提供的變量
2.5 用HTTP proxy module配置一個(gè)反向代理服務(wù)器
2.5.1 負(fù)載均衡的基本配置
2.5.2 反向代理的基本配置
2.6 小結(jié)
第二部分 如何編寫(xiě)HTTP模塊
第3章 開(kāi)發(fā)一個(gè)簡(jiǎn)單的HTTP模塊
3.1 如何調(diào)用HTTP模塊
3.2 準(zhǔn)備工作
3.2.1 整型的封裝
3.2.2 ngx_str_t數(shù)據(jù)結(jié)構(gòu)
3.2.3 ngx_list_t數(shù)據(jù)結(jié)構(gòu)
3.2.4 ngx_table_elt_t數(shù)據(jù)結(jié)構(gòu)
3.2.5 ngx_buf_t數(shù)據(jù)結(jié)構(gòu)
3.2.6 ngx_chain_t數(shù)據(jù)結(jié)構(gòu)
3.3 如何將自己的HTTP模塊編譯進(jìn)Nginx
3.3.1 config文件的寫(xiě)法
3.3.2 利用configure腳本將定制的模塊加入到Nginx中
3.3.3 直接修改Makefile文件
3.4 HTTP模塊的數(shù)據(jù)結(jié)構(gòu)
3.5 定義自己的HTTP模塊
3.6 處理用戶請(qǐng)求
3.6.1 處理方法的返回值
3.6.2 獲取URI和參數(shù)
3.6.3 獲取HTTP頭部
3.6.4 獲取HTTP包體
3.7 發(fā)送響應(yīng)
3.7.1 發(fā)送HTTP頭部
3.7.2 將內(nèi)存中的字符串作為包體發(fā)送
3.7.3 經(jīng)典的"Hello World"示例
3.8 將磁盤(pán)文件作為包體發(fā)送
3.8.1 如何發(fā)送磁盤(pán)中的文件
3.8.2 清理文件句柄
3.8.3 支持用戶多線程下載和斷點(diǎn)續(xù)傳
3.9 用C++語(yǔ)言編寫(xiě)HTTP模塊
3.9.1 編譯方式的修改
3.9.2 程序中的符號(hào)轉(zhuǎn)換
3.10 小結(jié)
第4章 配置、error日志和請(qǐng)求上下文
4.1 http配置項(xiàng)的使用場(chǎng)景
4.2 怎樣使用http配置
4.2.1 分配用于保存配置參數(shù)的數(shù)據(jù)結(jié)構(gòu)
4.2.2 設(shè)定配置項(xiàng)的解析方式
4.2.3 使用14種預(yù)設(shè)方法解析配置項(xiàng)
4.2.4 自定義配置項(xiàng)處理方法
4.2.5 合并配置項(xiàng)
4.3 HTTP配置模型
4.3.1 解析HTTP配置的流程
4.3.2 HTTP配置模型的內(nèi)存布局
4.3.3 如何合并配置項(xiàng)
4.3.4 預(yù)設(shè)配置項(xiàng)處理方法的工作原理
4.4 error日志的用法
4.5 請(qǐng)求的上下文
4.5.1 上下文與全異步Web服務(wù)器的關(guān)系
4.5.2 如何使用HTTP上下文
4.5.3 HTTP框架如何維護(hù)上下文結(jié)構(gòu)
4.6 小結(jié)
第5章 訪問(wèn)第三方服務(wù)
5.1 upstream的使用方式
5.1.1 ngx_http_upstream_t結(jié)構(gòu)體
5.1.2 設(shè)置upstream的限制性參數(shù)
5.1.3 設(shè)置需要訪問(wèn)的第三方服務(wù)器地址
5.1.4 設(shè)置回調(diào)方法
5.1.5 如何啟動(dòng)upstream機(jī)制
5.2 回調(diào)方法的執(zhí)行場(chǎng)景
5.2.1 create_request回調(diào)方法
5.2.2 reinit_request回調(diào)方法
5.2.3 finalize_request回調(diào)方法
5.2.4 process_header回調(diào)方法
5.2.5 rewrite_redirect回調(diào)方法
5.2.6 input_filter_init與input_filter回調(diào)方法
5.3 使用upstream的示例
5.3.1 upstream的各種配置參數(shù)
5.3.2 請(qǐng)求上下文
5.3.3 在create_request方法中構(gòu)造請(qǐng)求
5.3.4 在process_header方法中解析包頭
5.3.5 在finalize_request方法中釋放資源
5.3.6 在ngx_http_mytest_handler方法中啟動(dòng)upstream
5.4 subrequest的使用方式
5.4.1 配置子請(qǐng)求的處理方式
5.4.2 實(shí)現(xiàn)子請(qǐng)求處理完畢時(shí)的回調(diào)方法
5.4.3 處理父請(qǐng)求被重新激活后的回調(diào)方法
5.4.4 啟動(dòng)subrequest子請(qǐng)求
5.5 subrequest執(zhí)行過(guò)程中的主要場(chǎng)景
5.5.1 如何啟動(dòng)subrequest
5.5.2 如何轉(zhuǎn)發(fā)多個(gè)子請(qǐng)求的響應(yīng)包體
5.5.3 子請(qǐng)求如何激活父請(qǐng)求
5.6 subrequest使用的例子
5.6.1 配置文件中子請(qǐng)求的設(shè)置
5.6.2 請(qǐng)求上下文
5.6.3 子請(qǐng)求結(jié)束時(shí)的處理方法
5.6.4 父請(qǐng)求的回調(diào)方法
5.6.5 啟動(dòng)subrequest
5.7 小結(jié)
第6章 開(kāi)發(fā)一個(gè)簡(jiǎn)單的HTTP過(guò)濾模塊
6.1 過(guò)濾模塊的意義
6.2 過(guò)濾模塊的調(diào)用順序
6.2.1 過(guò)濾鏈表是如何構(gòu)成的
6.2.2 過(guò)濾鏈表的順序
6.2.3 官方默認(rèn)HTTP過(guò)濾模塊的功能簡(jiǎn)介
6.3 HTTP過(guò)濾模塊的開(kāi)發(fā)步驟
6.4 HTTP過(guò)濾模塊的簡(jiǎn)單例子
6.4.1 如何編寫(xiě)config文件
6.4.2 配置項(xiàng)和上下文
6.4.3 定義HTTP過(guò)濾模塊
6.4.4 初始化HTTP過(guò)濾模塊
6.4.5 處理請(qǐng)求中的HTTP頭部
6.4.6 處理請(qǐng)求中的HTTP包體
6.5 小結(jié)
第7章 Nginx提供的高級(jí)數(shù)據(jù)結(jié)構(gòu)
7.1 Nginx提供的高級(jí)數(shù)據(jù)結(jié)構(gòu)概述
7.2 ngx_queue_t雙向鏈表
7.2.1 為什么設(shè)計(jì)ngx_queue_t雙向鏈表
7.2.2 雙向鏈表的使用方法
7.2.3 使用雙向鏈表排序的例子
7.2.4 雙向鏈表是如何實(shí)現(xiàn)的
7.3 ngx_array_t動(dòng)態(tài)數(shù)組
7.3.1 為什么設(shè)計(jì)ngx_array_t動(dòng)態(tài)數(shù)組
7.3.2 動(dòng)態(tài)數(shù)組的使用方法
7.3.3 使用動(dòng)態(tài)數(shù)組的例子
7.3.4 動(dòng)態(tài)數(shù)組的擴(kuò)容方式
7.4 ngx_list_t單向鏈表
7.5 ngx_rbtree_t紅黑樹(shù)
7.5.1 為什么設(shè)計(jì)ngx_rbtree_t紅黑樹(shù)
7.5.2 紅黑樹(shù)的特性
7.5.3 紅黑樹(shù)的使用方法
7.5.4 使用紅黑樹(shù)的簡(jiǎn)單例子
7.5.5 如何自定義添加成員方法
7.6 ngx_radix_tree_t基數(shù)樹(shù)
7.6.1 ngx_radix_tree_t基數(shù)樹(shù)的原理
7.6.2 基數(shù)樹(shù)的使用方法
7.6.3 使用基數(shù)樹(shù)的例子
7.7 支持通配符的散列表
7.7.1 ngx_hash_t基本散列表
7.7.2 支持通配符的散列表
7.7.3 帶通配符散列表的使用例子
7.8 小結(jié)
第三部分 深入Nginx
第8章 Nginx基礎(chǔ)架構(gòu)
8.1 Web服務(wù)器設(shè)計(jì)中的關(guān)鍵約束
8.2 Nginx的架構(gòu)設(shè)計(jì)
8.2.1 優(yōu)秀的模塊化設(shè)計(jì)
8.2.2 事件驅(qū)動(dòng)架構(gòu)
8.2.3 請(qǐng)求的多階段異步處理
8.2.4 管理進(jìn)程、多工作進(jìn)程設(shè)計(jì)
8.2.5 平臺(tái)無(wú)關(guān)的代碼實(shí)現(xiàn)
8.2.6 內(nèi)存池的設(shè)計(jì)
8.2.7 使用統(tǒng)一管道過(guò)濾器模式的HTTP過(guò)濾模塊
8.2.8 其他一些用戶模塊
8.3 Nginx框架中的核心結(jié)構(gòu)體ngx_cycle_t
8.3.1 ngx_listening_t結(jié)構(gòu)體
8.3.2 ngx_cycle_t結(jié)構(gòu)體
8.3.3 ngx_cycle_t支持的方法
8.4 Nginx啟動(dòng)時(shí)框架的處理流程
8.5 worker進(jìn)程是如何工作的
8.6 master進(jìn)程是如何工作的
8.7 小結(jié)
第9章 事件模塊
9.1 事件處理框架概述
9.2 Nginx事件的定義
9.3 Nginx連接的定義
9.3.1 被動(dòng)連接
9.3.2 主動(dòng)連接
9.3.3 ngx_connection_t連接池
9.4 ngx_events_module核心模塊
9.4.1 如何管理所有事件模塊的配置項(xiàng)
9.4.2 管理事件模塊
9.5 ngx_event_core_module事件模塊
9.6 epoll事件驅(qū)動(dòng)模塊
9.6.1 epoll的原理和用法
9.6.2 如何使用epoll
9.6.3 ngx_epoll_module模塊的實(shí)現(xiàn)
9.7 定時(shí)器事件
9.7.1 緩存時(shí)間的管理
9.7.2 緩存時(shí)間的精度
9.7.3 定時(shí)器的實(shí)現(xiàn)
9.8 事件驅(qū)動(dòng)框架的處理流程
9.8.1 如何建立新連接
9.8.2 如何解決"驚群"問(wèn)題
9.8.3 如何實(shí)現(xiàn)負(fù)載均衡
9.8.4 post事件隊(duì)列
9.8.5 ngx_process_events_and_timers流程
9.9 文件的異步I/O
9.9.1 Linux內(nèi)核提供的文件異步I/O
9.9.2 ngx_epoll_module模塊中實(shí)現(xiàn)的針對(duì)文件的異步I/O
9.10 小結(jié)
第10章 HTTP框架的初始化
10.1 HTTP框架概述
10.2 管理HTTP模塊的配置項(xiàng)
10.2.1 管理main級(jí)別下的配置項(xiàng)
10.2.2 管理server級(jí)別下的配置項(xiàng)
10.2.3 管理location級(jí)別下的配置項(xiàng)
10.2.4 不同級(jí)別配置項(xiàng)的合并
10.3 監(jiān)聽(tīng)端口的管理
10.4 server的快速檢索
10.5 location的快速檢索
10.6 HTTP請(qǐng)求的11個(gè)處理階段
10.6.1 HTTP處理階段的普適規(guī)則
10.6.2 NGX_HTTP_POST_READ_PHASE階段
10.6.3 NGX_HTTP_SERVER_REWRITE_PHASE階段
10.6.4 NGX_HTTP_FIND_CONFIG_PHASE階段
10.6.5 NGX_HTTP_REWRITE_PHASE階段
10.6.6 NGX_HTTP_POST_REWRITE_PHASE階段
10.6.7 NGX_HTTP_PREACCESS_PHASE階段
10.6.8 NGX_HTTP_ACCESS_PHASE階段
10.6.9 NGX_HTTP_POST_ACCESS_PHASE階段
10.6.10 NGX_HTTP_TRY_FILES_PHASE階段
10.6.11 NGX_HTTP_CONTENT_PHASE階段
10.6.12 NGX_HTTP_LOG_PHASE階段
10.7 HTTP框架的初始化流程
10.8 小結(jié)
第11章 HTTP框架的執(zhí)行流程
11.1 HTTP框架執(zhí)行流程概述
11.2 新連接建立時(shí)的行為
11.3 第一次可讀事件的處理
11.4 接收HTTP請(qǐng)求行
11.5 接收HTTP頭部
11.6 處理HTTP請(qǐng)求
11.6.1 ngx_http_core_generic_phase
11.6.2 ngx_http_core_rewrite_phase
11.6.3 ngx_http_core_access_phase
11.6.4 ngx_http_core_content_phase
11.7 subrequest與post請(qǐng)求
11.8 處理HTTP包體
11.8.1 接收包體
11.8.2 放棄接收包體
11.9 發(fā)送HTTP響應(yīng)
11.9.1 ngx_http_send_header
11.9.2 ngx_http_output_filter
11.9.3 ngx_http_writer
11.10 結(jié)束HTTP請(qǐng)求
11.10.1 ngx_http_close_connection
11.10.2 ngx_http_free_request
11.10.3 ngx_http_close_request
11.10.4 ngx_http_finalize_connection
11.10.5 ngx_http_terminate_request
11.10.6 ngx_http_finalize_request
11.11 小結(jié)
第12章 upstream機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)
12.1 upstream機(jī)制概述
12.1.1 設(shè)計(jì)目的
12.1.2 ngx_http_upstream_t數(shù)據(jù)結(jié)構(gòu)的意義
12.1.3 ngx_http_upstream_conf_t配置結(jié)構(gòu)體
12.2 啟動(dòng)upstream
12.3 與上游服務(wù)器建立連接
12.4 發(fā)送請(qǐng)求到上游服務(wù)器
12.5 接收上游服務(wù)器的響應(yīng)頭部
12.5.1 應(yīng)用層協(xié)議的兩段劃分方式
12.5.2 處理包體的3種方式
12.5.3 接收響應(yīng)頭部的流程
12.6 不轉(zhuǎn)發(fā)響應(yīng)時(shí)的處理流程
12.6.1 input_filter方法的設(shè)計(jì)
12.6.2 默認(rèn)的input_filter方法
12.6.3 接收包體的流程
12.7 以下游網(wǎng)速優(yōu)先來(lái)轉(zhuǎn)發(fā)響應(yīng)
12.7.1 轉(zhuǎn)發(fā)響應(yīng)的包頭
12.7.2 轉(zhuǎn)發(fā)響應(yīng)的包體
12.8 以上游網(wǎng)速優(yōu)先來(lái)轉(zhuǎn)發(fā)響應(yīng)
12.8.1 ngx_event_pipe_t結(jié)構(gòu)體的意義
12.8.2 轉(zhuǎn)發(fā)響應(yīng)的包頭
12.8.3 轉(zhuǎn)發(fā)響應(yīng)的包體
12.8.4 ngx_event_pipe_read_upstream方法
12.8.5 ngx_event_pipe_write_to_downstream方法
12.9 結(jié)束upstream請(qǐng)求
12.10 小結(jié)
第13章 郵件代理模塊
13.1 郵件代理服務(wù)器的功能
13.2 郵件模塊的處理框架
13.2.1 一個(gè)請(qǐng)求的8個(gè)獨(dú)立處理階段
13.2.2 郵件類(lèi)模塊的定義
13.2.3 郵件框架的初始化
13.3 初始化請(qǐng)求
13.3.1 描述郵件請(qǐng)求的ngx_mail_session_t結(jié)構(gòu)體
13.3.2 初始化郵件請(qǐng)求的流程
13.4 接收并解析客戶端請(qǐng)求
13.5 郵件認(rèn)證
13.5.1 ngx_mail_auth_http_ctx_t結(jié)構(gòu)體
13.5.2 與認(rèn)證服務(wù)器建立連接
13.5.3 發(fā)送請(qǐng)求到認(rèn)證服務(wù)器
13.5.4 接收并解析響應(yīng)
13.6 與上游郵件服務(wù)器間的認(rèn)證交互
13.6.1 ngx_mail_proxy_ctx_t結(jié)構(gòu)體
13.6.2 向上游郵件服務(wù)器發(fā)起連接
13.6.3 與郵件服務(wù)器認(rèn)證交互的過(guò)程
13.7 透?jìng)魃嫌梧]件服務(wù)器與客戶端間的流
13.8 小結(jié)
第14章 進(jìn)程間的通信機(jī)制
14.1 概述
14.2 共享內(nèi)存
14.3 原子操作
14.3.1 不支持原子庫(kù)下的原子操作
14.3.2 x86架構(gòu)下的原子操作
14.3.3 自旋鎖
14.4 Nginx頻道
14.5 信號(hào)
14.6 信號(hào)量
14.7 文件鎖
14.8 互斥鎖
14.8.1 文件鎖實(shí)現(xiàn)的ngx_shmtx_t鎖
14.8.2 原子變量實(shí)現(xiàn)的ngx_shmtx_t鎖
14.9 小結(jié)

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)