-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入理解Nginx:模塊開發與架構解析(第2版)

( 簡體 字)
作者:陶輝類別:1. -> 程式設計 -> 網路編程 -> Nginx
譯者:
出版社:機械工業出版社深入理解Nginx:模塊開發與架構解析(第2版) 3dWoo書號: 43490
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:2/19/2016
頁數:624
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111526254
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書包括四大部分:Nginx能幫我做什么;如何編寫一個定制的httpmodule;深入Nginx;實戰。第一部分針對初級讀者,介紹Nginx關于獲取編譯運行的基本知識。第二部分針對中級讀者,以一個例子為主線,告訴讀者如何開發一個http模塊,這部分讀者不需要深入了解Nginx的細節,只需要知道如何實現一個基本的http模塊。第三部分針對高級讀者,這是本書的重點,徹底解析Nginx架構,深入探討Nginx各種設計的目的與意義,并對第二部分使用到的一些特性進行代碼設計實現上的探索。讀者讀完本部分,會對整個Nginx架構有清晰的認識,可以編寫各種模塊(不局限于http模塊)插入到Nginx中,從而定制自己的Nginx。第四部分針對中高級讀者,以Tengine的開源模塊為例,幫助讀者從實戰角度理解第二、三部分描述的內容。
目錄:

前 言
第一部分 Nginx能幫我們做什么
第1章 研究Nginx前的準備工作 2
1.1 Nginx是什么 2
1.2 為什么選擇Nginx 5
1.3 準備工作 7
1.3.1 Linux操作系統 7
1.3.2 使用Nginx的必備軟件 7
1.3.3 磁盤目錄 8
1.3.4 Linux內核參數的優化 9
1.3.5 獲取Nginx源碼 10
1.4 編譯安裝Nginx 11
1.5 conf?igure詳解 11
1.5.1 conf?igure的命令參數 11
1.5.2 conf?igure執行流程 18
1.5.3 conf?igure生成的文件 21
1.6 Nginx的命令行控制 23
1.7 小結 27
第2章 Nginx的配置 28
2.1 運行中的Nginx進程間的關系 28
2.2 Nginx配置的通用語法 31
2.2.1 塊配置項 31
2.2.2 配置項的語法格式 32
2.2.3 配置項的注釋 33
2.2.4 配置項的單位 33
2.2.5 在配置中使用變量 33
2.3 Nginx服務的基本配置 34
2.3.1 用于調試進程和定位問題的配置項 34
2.3.2 正常運行的配置項 36
2.3.3 優化性能的配置項 37
2.3.4 事件類配置項 39
2.4 用HTTP核心模塊配置一個靜態Web服務器 40
2.4.1 虛擬主機與請求的分發 41
2.4.2 文件路徑的定義 45
2.4.3 內存及磁盤資源的分配 47
2.4.4 網絡連接的設置 49
2.4.5 MIME類型的設置 52
2.4.6 對客戶端請求的限制 53
2.4.7 文件操作的優化 54
2.4.8 對客戶端請求的特殊處理 56
2.4.9 ngx_http_core_module模塊提供的變量 57
2.5 用HTTP proxy module配置一個反向代理服務器 59
2.5.1 負載均衡的基本配置 61
2.5.2 反向代理的基本配置 63
2.6 小結 66
第二部分 如何編寫HTTP模塊
第3章 開發一個簡單的HTTP模塊 68
3.1 如何調用HTTP模塊 68
3.2 準備工作 70
3.2.1 整型的封裝 71
3.2.2 ngx_str_t數據結構 71
3.2.3 ngx_list_t數據結構 71
3.2.4 ngx_table_elt_t數據結構 75
3.2.5 ngx_buf_t數據結構 75
3.2.6 ngx_chain_t數據結構 77
3.3 如何將自己的HTTP模塊編譯進Nginx 77
3.3.1 conf?ig文件的寫法 77
3.3.2 利用conf?igure腳本將定制的模塊加入到Nginx中 78
3.3.3 直接修改Makef?ile文件 81
3.4 HTTP模塊的數據結構 82
3.5 定義自己的HTTP模塊 86
3.6 處理用戶請求 89
3.6.1 處理方法的返回值 89
3.6.2 獲取URI和參數 92
3.6.3 獲取HTTP頭部 94
3.6.4 獲取HTTP包體 97
3.7 發送響應 99
3.7.1 發送HTTP頭部 99
3.7.2 將內存中的字符串作為包體發送 101
3.7.3 經典的“Hello World”示例 102
3.8 將磁盤文件作為包體發送 103
3.8.1 如何發送磁盤中的文件 104
3.8.2 清理文件句柄 106
3.8.3 支持用戶多線程下載和斷點續傳 107
3.9 用C++語言編寫HTTP模塊 108
3.9.1 編譯方式的修改 108
3.9.2 程序中的符號轉換 109
3.10 小結 110
第4章 配置、error日志和請求上下文 111
4.1 http配置項的使用場景 111
4.2 怎樣使用http配置 113
4.2.1 分配用于保存配置參數的數據結構 113
4.2.2 設定配置項的解析方式 115
4.2.3 使用14種預設方法解析配置項 121
4.2.4 自定義配置項處理方法 131
4.2.5 合并配置項 133
4.3 HTTP配置模型 135
4.3.1 解析HTTP配置的流程 136
4.3.2 HTTP配置模型的內存布局 139
4.3.3 如何合并配置項 142
4.3.4 預設配置項處理方法的工作原理 144
4.4 error日志的用法 145
4.5 請求的上下文 149
4.5.1 上下文與全異步Web服務器的關系 149
4.5.2 如何使用HTTP上下文 151
4.5.3 HTTP框架如何維護上下文結構 152
4.6 小結 153
第5章 訪問第三方服務 154
5.1 upstream的使用方式 155
5.1.1 ngx_http_upstream_t結構體 158
5.1.2 設置upstream的限制性參數 159
5.1.3 設置需要訪問的第三方服務器地址 160
5.1.4 設置回調方法 161
5.1.5 如何啟動upstream機制 161
5.2 回調方法的執行場景 162
5.2.1 create_request回調方法 162
5.2.2 reinit_request回調方法 164
5.2.3 f?inalize_request回調方法 165
5.2.4 process_header回調方法 165
5.2.5 rewrite_redirect回調方法 167
5.2.6 input_f?ilter_init與input_f?ilter回調方法 167
5.3 使用upstream的示例 168
5.3.1 upstream的各種配置參數 168
5.3.2 請求上下文 170
5.3.3 在create_request方法中構造請求 170
5.3.4 在process_header方法中解析包頭 171
5.3.5 在f?inalize_request方法中釋放資源 175
5.3.6 在ngx_http_mytest_handler方法中啟動upstream 175
5.4 subrequest的使用方式 177
5.4.1 配置子請求的處理方式 177
5.4.2 實現子請求處理完畢時的回調方法 178
5.4.3 處理父請求被重新激活后的回調方法 179
5.4.4 啟動subrequest子請求 179
5.5 subrequest執行過程中的主要場景 180
5.5.1 如何啟動subrequest 180
5.5.2 如何轉發多個子請求的響應包體 182
5.5.3 子請求如何激活父請求 185
5.6 subrequest使用的例子 187
5.6.1 配置文件中子請求的設置 187
5.6.2 請求上下文 188
5.6.3 子請求結束時的處理方法 188
5.6.4 父請求的回調方法 189
5.6.5 啟動subrequest 190
5.7 小結 191
第6章 開發一個簡單的HTTP過濾模塊 192
6.1 過濾模塊的意義 192
6.2 過濾模塊的調用順序 193
6.2.1 過濾鏈表是如何構成的 194
6.2.2 過濾鏈表的順序 196
6.2.3 官方默認HTTP過濾模塊的功能簡介 197
6.3 HTTP過濾模塊的開發步驟 198
6.4 HTTP過濾模塊的簡單例子 200
6.4.1 如何編寫conf?ig文件 201
6.4.2 配置項和上下文 201
6.4.3 定義HTTP過濾模塊 203
6.4.4 初始化HTTP過濾模塊 204
6.4.5 處理請求中的HTTP頭部 204
6.4.6 處理請求中的HTTP包體 206
6.5 小結 206
第7章 Nginx提供的高級數據結構 207
7.1 Nginx提供的高級數據結構概述 207
7.2 ngx_queue_t雙向鏈表 209
7.2.1 為什么設計ngx_queue_t雙向鏈表 209
7.2.2 雙向鏈表的使用方法 209
7.2.3 使用雙向鏈表排序的例子 212
7.2.4 雙向鏈表是如何實現的 213
7.3 ngx_array_t動態數組 215
7.3.1 為什么設計ngx_array_t動態數組 215
7.3.2 動態數組的使用方法 215
7.3.3  使用動態數組的例子 217
7.3.4 動態數組的擴容方式 218
7.4 ngx_list_t單向鏈表 219
7.5 ngx_rbtree_t紅黑樹 219
7.5.1 為什么設計ngx_rbtree_t紅黑樹 219
7.5.2 紅黑樹的特性 220
7.5.3 紅黑樹的使用方法 222
7.5.4 使用紅黑樹的簡單例子 225
7.5.5 如何自定義添加成員方法 226
7.6 ngx_radix_tree_t基數樹 228
7.6.1 ngx_radix_tree_t基數樹的原理 228
7.6.2 基數樹的使用方法 230
7.6.3 使用基數樹的例子 231
7.7 支持通配符的散列表 232
7.7.1 ngx_hash_t基本散列表 232
7.7.2 支持通配符的散列表 235
7.7.3 帶通配符散列表的使用例子 241
7.8 小結 245
第三部分 深入Nginx
第8章 Nginx基礎架構 248
8.1 Web服務器設計中的關鍵約束 249
8.2 Nginx的架構設計 251
8.2.1 優秀的模塊化設計 251
8.2.2 事件驅動架構 254
8.2.3 請求的多階段異步處理 256
8.2.4 管理進程、多工作進程設計 259
8.2.5 平臺無關的代碼實現 259
8.2.6 內存池的設計 259
8.2.7 使用統一管道過濾器模式的HTTP過濾模塊 260
8.2.8 其他一些用戶模塊 260
8.3 Nginx框架中的核心結構體ngx_cycle_t 260
8.3.1 ngx_listening_t結構體 261
8.3.2 ngx_cycle_t結構體 262
8.3.3 ngx_cycle_t支持的方法 264
8.4 Nginx啟動時框架的處理流程 266
8.5 worker進程是如何工作的 269
8.6 master進程是如何工作的 271
8.7 ngx_pool_t內存池 276
8.8 小結 284
第9章 事件模塊 285
9.1 事件處理框架概述 286
9.2 Nginx事件的定義 288
9.3 Nginx連接的定義 291
9.3.1 被動連接 292
9.3.2 主動連接 295
9.3.3 ngx_connection_t連接池 296
9.4 ngx_events_module核心模塊 297
9.4.1 如何管理所有事件模塊的配置項 299
9.4.2 管理事件模塊 300
9.5 ngx_event_core_module事件模塊 302
9.6 epoll事件驅動模塊 308
9.6.1 epoll的原理和用法 308
9.6.2 如何使用epoll 310
9.6.3 ngx_epoll_module模塊的實現 312
9.7 定時器事件 320
9.7.1 緩存時間的管理 320
9.7.2 緩存時間的精度 323
9.7.3 定時器的實現 323
9.8 事件驅動框架的處理流程 324
9.8.1 如何建立新連接 325
9.8.2 如何解決“驚群”問題 327
9.8.3 如何實現負載均衡 329
9.8.4 post事件隊列 330
9.8.5 ngx_process_events_and_timers流程 331
9.9 文件的異步I/O 334
9.9.1 Linux內核提供的文件異步I/O 335
9.9.2 ngx_epoll_module模塊中實現的針對文件的異步I/O 337
9.10 TCP協議與Nginx 342
9.11 小結 347
第10章 HTTP框架的初始化 348
10.1 HTTP框架概述 349
10.2 管理HTTP模塊的配置項 352
10.2.1 管理main級別下的配置項 353
10.2.2 管理server級別下的配置項 355
10.2.3 管理location級別下的配置項 358
10.2.4 不同級別配置項的合并 364
10.3 監聽端口的管理 367
10.4 server的快速檢索 370
10.5 location的快速檢索 370
10.6 HTTP請求的11個處理階段 372
10.6.1 HTTP處理階段的普適規則 374
10.6.2 NGX_HTTP_POST_READ_PHASE階段 375
10.6.3 NGX_HTTP_SERVER_REWRITE_PHASE階段 378
10.6.4 NGX_HTTP_FIND_CONFIG_PHASE階段 378
10.6.5 NGX_HTTP_REWRITE_PHASE階段 378
10.6.6 NGX_HTTP_POST_REWRITE_PHASE階段 379
10.6.7 NGX_HTTP_PREACCESS_PHASE階段 379
10.6.8 NGX_HTTP_ACCESS_PHASE階段 379
10.6.9 NGX_HTTP_POST_ACCESS_PHASE階段 380
10.6.10 NGX_HTTP_TRY_FILES_PHASE階段 380
10.6.11 NGX_HTTP_CONTENT_PHASE階段 380
10.6.12 NGX_HTTP_LOG_PHASE階段 382
10.7 HTTP框架的初始化流程 382
10.8 小結 384
第11章 HTTP框架的執行流程 385
11.1 HTTP框架執行流程概述 386
11.2 新連接建立時的行為 387
11.3 第一次可讀事件的處理 388
11.4 接收HTTP請求行 394
11.5 接收HTTP頭部 398
11.6 處理HTTP請求 400
11.6.1 ngx_http_core_generic_phase 406
11.6.2 ngx_http_core_rewrite_phase 408
11.6.3 ngx_http_core_access_phase 409
11.6.4 ngx_http_core_content_phase 412
11.7 subrequest與post請求 415
11.8 處理HTTP包體 417
11.8.1 接收包體 419
11.8.2 放棄接收包體 425
11.9 發送HTTP響應 429
11.9.1 ngx_http_send_header 430
11.9.2 ngx_http_output_f?ilter 432
11.9.3 ngx_http_writer 435
11.10 結束HTTP請求 437
11.10.1 ngx_http_close_connection 438
11.10.2 ngx_http_free_request 439
11.10.3 ngx_http_close_request 440
11.10.4 ngx_http_f?inalize_connection 441
11.10.5 ngx_http_terminate_request 443
11.10.6 ngx_http_f?inalize_request 443
11.11 小結 446
第12章 upstream機制的設計與實現 447
12.1 upstream機制概述 448
12.1.1 設計目的 448
12.1.2 ngx_http_upstream_t數據結構的意義 450
12.1.3 ngx_http_upstream_conf_t配置結構體 453
12.2 啟動upstream 455
12.3 與上游服務器建立連接 457
12.4 發送請求到上游服務器 460
12.5 接收上游服務器的響應頭部 463
12.5.1 應用層協議的兩段劃分方式 463
12.5.2 處理包體的3種方式 464
12.5.3 接收響應頭部的流程 465
12.6 不轉發響應時的處理流程 469
12.6.1 input_f?ilter方法的設計 469
12.6.2 默認的input_f?ilter方法 470
12.6.3 接收包體的流程 472
12.7 以下游網速優先來轉發響應 473
12.7.1 轉發響應的包頭 474
12.7.2 轉發響應的包體 477
12.8 以上游網速優先來轉發響應 481
12.8.1 ngx_event_pipe_t結構體的意義 481
12.8.2 轉發響應的包頭 485
12.8.3 轉發響應的包體 487
12.8.4 ngx_event_pipe_read_upstream方法 489
12.8.5 ngx_event_pipe_write_to_downstream方法 494
12.9 結束upstream請求 496
12.10 小結 499
第13章 郵件代理模塊 500
13.1 郵件代理服務器的功能 500
13.2 郵件模塊的處理框架 503
13.2.1 一個請求的8個獨立處理階段 503
13.2.2 郵件類模塊的定義 504
13.2.3 郵件框架的初始化 506
13.3 初始化請求 506
13.3.1 描述郵件請求的ngx_mail_session_t結構體 506
13.3.2 初始化郵件請求的流程 509
13.4 接收并解析客戶端請求 509
13.5 郵件認證 510
13.5.1 ngx_mail_auth_http_ctx_t結構體 510
13.5.2 與認證服務器建立連接 511
13.5.3 發送請求到認證服務器 513
13.5.4 接收并解析響應 514
13.6 與上游郵件服務器間的認證交互 514
13.6.1 ngx_mail_proxy_ctx_t結構體 516
13.6.2 向上游郵件服務器發起連接 516
13.6.3 與郵件服務器認證交互的過程 518
13.7 透傳上游郵件服務器與客戶端間的流 520
13.8 小結 524
第14章 進程間的通信機制 525
14.1 概述 525
14.2 共享內存 526
14.3 原子操作 530
14.3.1 不支持原子庫下的原子操作 530
14.3.2 x86架構下的原子操作 531
14.3.3 自旋鎖 533
14.4 Nginx頻道 535
14.5 信號 538
14.6 信號量 540
14.7 文件鎖 541
14.8 互斥鎖 544
14.8.1 文件鎖實現的ngx_shmtx_t鎖 546
14.8.2 原子變量實現的ngx_shmtx_t鎖 548
14.9 小結 553
第15章 變量 554
15.1 使用內部變量開發模塊 555
15.1.1 定義模塊 556
15.1.2 定義http模塊加載方式 557
15.1.3 解析配置中的變量 558
15.1.4 處理請求 560
15.2 內部變量工作原理 561
15.2.1 何時定義變量 561
15.2.2 相關數據結構詳述 564
15.2.3 定義變量的方法 572
15.2.4 使用變量的方法 572
15.2.5 如何解析變量 573
15.3 定義內部變量 576
15.4 外部變量與腳本引擎 577
15.4.1 相關數據結構 578
15.4.2 編譯“set”腳本 581
15.4.3 腳本執行流程 586
15.5 小結 589
第16章 slab共享內存 590
16.1 操作slab共享內存的方法 590
16.2 使用slab共享內存池的例子 592
16.2.1 共享內存中的數據結構 593
16.2.2 操作共享內存中的紅黑樹與鏈表 595
16.2.3 解析配置文件 600
16.2.4 定義模塊 603
16.3 slab內存管理的實現原理 605
16.3.1 內存結構布局 607
16.3.2 分配內存流程 613
16.3.3 釋放內存流程 617
16.3.4 如何使用位操作 619
16.3.5 slab內存池間的管理 624
16.4 小結 624
序: