Nginx完全開發指南:使用C,C++和OpenResty

Nginx完全開發指南:使用C,C++和OpenResty

《Nginx完全開發指南:使用C、C++和OpenResty》 一書作者羅劍鋒,電子工業出版社2017年6月出版

內容提要

Nginx是著名的Web伺服器,性能優異,運行效率遠超傳統的Apache、Tomcat,廣泛套用於國內外諸多頂級網際網路公司。

Nginx的一個突出特點是其靈活優秀的模組化架構,可以在不修改核心的前提下增加任意功能,自2004年發布至今,已經擁有百餘個官方及非官方的功能模組(如proxy、mysql、redis、rtmp、lua等),使得Nginx成長為了一個近乎“全能”的伺服器軟體。

Nginx功能強大,架構複雜,學習、維護和開發的門檻較高。為了幫助讀者跨越這一障礙,《Nginx完全開發指南:使用C、C++和OpenResty》深入最新的Nginx源碼(Stable 1.12.0),詳細剖析了模組體系、動態外掛程式、功能框架、進程模型、事件驅動、執行緒池、TCP/UDP/HTTP處理等Nginx核心運行機制,在此基礎上講解如何使用C、C++、Lua、nginScript等語言來增強擴展Nginx,讓任何人都能夠便捷、輕鬆地開發和定製Nginx,進而套用到自己的實際工作中,創造出更多的價值。

《Nginx完全開發指南:使用C、C++和OpenResty》結構嚴謹、脈絡清晰、論述精確、詳略得當、圖文並茂,值得廣大軟體開發工程師、系統運維工程師和編程愛好者擁有。

目錄

第0章 導讀 1

0.1 關於本書 1

0.2 讀者對象 2

0.3 讀者要求 3

0.4 運行環境 4

0.5 本書的結構 4

0.6 如何閱讀本書 7

0.7 本書的源碼 8

第1章 Nginx入門 9

1.1 關於Nginx 9

1.2 安裝Nginx 13

1.3 配置Nginx 19

1.4 總結 30

第2章 Nginx開發準備 31

2.1 開發環境 31

2.2 目錄結構 32

2.3 源碼特點 34

2.4 使用C++ 35

2.5 C++包裝類 38

2.6 總結 40

第3章 Nginx基礎設施 41

3.1 頭檔案 41

3.2 整數類型 42

3.3 錯誤處理 47

3.4 記憶體池 50

3.5 字元串 58

3.6 時間與日期 64

3.7 運行日誌 70

3.8 總結 74

第4章 Nginx高級數據結構 77

4.1 動態數組 77

4.2 單向鍊表 83

4.3 雙端佇列 90

4.4 紅黑樹 101

4.5 緩衝區 108

4.6 數據塊鏈 113

4.7 鍵值對 120

4.8 總結 121

第5章 Nginx開發綜述 123

5.1 最簡單的模組 123

5.2 開發基本流程 131

5.3 編譯腳本 134

5.4 總結 137

第6章 Nginx模組體系 139

6.1 模組架構 139

6.2 配置解析 152

6.3 源碼分析 168

6.4 C++封裝 172

6.5 C++開發模組 180

6.6 總結 187

第7章 Nginx HTTP框架綜述 191

7.1 框架簡介 191

7.2 處理引擎 198

7.3 過濾引擎 205

7.4 源碼分析 211

7.5 C++封裝 213

7.6 總結 219

第8章 Nginx HTTP請求處理 221

8.1 狀態碼 221

8.2 請求結構體 222

8.3 請求行 223

8.4 請求頭 225

8.5 請求體 226

8.6 回響頭 227

8.7 回響體 229

8.8 源碼分析 229

8.9 C++封裝 232

8.10 開發handler模組 241

8.11 開發filter模組 246

8.12 總結 253

第9章 Nginx HTTP請求轉發 255

9.1 框架簡介 255

9.2 請求轉發機制 261

9.3 負載均衡機制 266

9.4 源碼分析 275

9.5 C++封裝 281

9.6 開發upstream模組 288

9.7 開發load-balance模組 294

9.8 總結 299

第10章 Nginx HTTP子請求 301

10.1 子請求簡介 301

10.2 子請求運行機制 307

10.3 C++封裝 314

10.4 數據回傳模組 317

10.5 在模組里使用子請求 323

10.6 總結 328

第11章 Nginx變數 329

11.1 結構定義 329

11.2 運行機制 332

11.3 複雜變數 334

11.4 C++封裝 335

11.5 在模組里使用變數 341

11.6 在模組里使用複雜變數 343

11.7 總結 345

第12章 Nginx輔助設施 347

12.1 摘要算法 347

12.2 編碼和解碼 352

12.3 正則表達式 356

12.4 共享記憶體 356

12.5 總結 359

第13章 Nginx進程機制 361

13.1 基本系統調用 361

13.2 進程系統調用 362

13.3 信號系統調用 364

13.4 結構定義 365

13.5 全局變數 368

13.6 啟動過程 370

13.7 信號處理 377

13.8 單進程模式 379

13.9 多進程模式 382

13.10 總結 390

第14章 Nginx事件機制 393

14.1 基本系統調用 393

14.2 socket系統調用 395

14.3 epoll系統調用 399

14.4 結構定義 403

14.5 定時器 415

14.6 模組體系 419

14.7 全局變數 425

14.8 運行機制 427

14.9 總結 452

第15章 Nginx多執行緒機制 455

15.1 eventfd系統調用 455

15.2 pthread系統調用 456

15.3 結構定義 457

15.4 事件通知 460

15.5 運行機制 463

15.6 在模組里使用多執行緒 469

15.7 總結 474

第16章 Nginx Stream機制 477

16.1 模組體系 477

16.2 監聽連線埠 483

16.3 處理引擎 491

16.4 過濾引擎 495

16.5 運行機制 496

16.6 開發stream模組 507

16.7 總結 514

第17章 Nginx HTTP機制 517

17.1 結構定義 517

17.2 初始化連線 519

17.3 執行引擎 528

17.4 處理請求體 534

17.5 傳送數據 540

17.6 結束請求 543

17.7 總結 548

第18章 Nginx與設計模式 551

18.1 設計模式簡介 551

18.2 框架級別的模式 551

18.3 業務級別的模式 553

18.4 代碼級別的模式 554

18.5 總結 556

第19章 OpenResty開發 557

19.1 簡介 557

19.2 Lua語言 566

19.3 LuaJIT 577

19.4 Lua模組 581

19.5 功能接口 585

19.6 套用實例 594

19.7 Stream Lua模組 598

19.8 lua-resty庫 601

19.9 總結 603

第20章 結束語 605

20.1 本書的遺憾 605

20.2 下一步 605

20.3 臨別贈言 606

附錄A 推薦書目 607

附錄B GDB調試簡介 609

附錄C Nginx C++模組簡介 611

附錄D Nginx的字元串格式化 613

附錄E nginScript簡介 615

相關詞條

熱門詞條

聯絡我們