幫助中心 | 我的帳號 | 關於我們

Nginx完全開髮指南(使用C\C++\JavaScript和Lua)

  • 作者:羅劍鋒
  • 出版社:電子工業
  • ISBN:9787121364365
  • 出版日期:2019/05/01
  • 裝幀:平裝
  • 頁數:602
人民幣:RMB 109 元      售價:
放入購物車
加入收藏夾

內容大鋼
    Nginx是著名的Web伺服器,性能優異,運行效率遠超傳統的Apache、Tomcat,廣泛應用於國內外諸多頂級互聯網公司。
    Nginx的一個突出特點是其靈活優秀的模塊化架構,可以在不修改核心的前提下增加任意功能,自2004年發布至今,已經擁有百余個官方及非官方的功能模塊(如proxy、mysql、redis、rtmp、lua等),使得Nginx成長為了一個近乎「全能」的伺服器軟體。
    Nginx功能強大,架構複雜,學習、維護和開發的門檻較高。為了幫助讀者跨越這一障礙,本書深入最新的Nginx源碼(Stable 1.16.0),詳細剖析了模塊體系、動態插件、功能框架、內存分配、進程模型、事件驅動、線程池、TCP/UDP/HTTP處理等Nginx核心運行機制,在此基礎上講解如何使用C、C++、JavaScript、Lua等語言來增強擴展Nginx,讓任何人都能夠便捷、輕鬆地開發和定製Nginx,進而應用到自己的實際工作中,創造出更多的價值。
    本書結構嚴謹、脈絡清晰、論述精確、詳略得當、圖文並茂,值得廣大軟體開發工程師、系統運維工程師和編程愛好者擁有。

作者介紹
羅劍鋒
    羅劍鋒,網名「Chrono」,前奇虎360技術專家,Nginx/OpenResty開源項目貢獻者,也是極客時間《透視HTTP協議》等專欄的作者。他熟悉各種網路應用協議,專註于C/C++、Linux、高性能編程等領域,著有《C++11/14高級編程》《Boost程序庫完全開髮指南》《Nginx完全開髮指南》《OperlResty完全開髮指南》等圖書。

目錄
第0章  導讀
  0.1  于本書
  0.2  讀者對象
  0.3  讀者要求
  0.4  運行環境
  0.5  本書的結構
  0.6  如何閱讀本書
  0.7  本書的源碼
第1章  Nginx入門
  1.1  關於Nginx
    1.1.1  歷史
    1.1.2  特點
    1.1.3  進程模型
    1.1.4  版本
  1.2  安裝Nginx
    1.2.1  準備工作
    1.2.2  快速安裝
    1.2.3  運行命令
    1.2.4  驗證安裝
    1.2.5  定製安裝
  1.3  配置Nginx
    1.3.1  語法格式
    1.3.2  進程管理
    1.3.3  動態模塊
    1.3.4  運行日誌
    1.3.5  事件機制
  1.4  HTTP服務
    1.4.1  基本配置
    1.4.3  location配置
    1.4.4  file配置
  1.5  TCP/UDP服務
  1.6  反向代理
    1.6.1  上游集群
    1.6.2  負載均衡
    1.6.3  代理轉發
  1.7  變數
  1.8  總結
第2章  Nginx開發準備
  2.1  源碼結構
  2.2  源碼特點
    2.2.1  代碼風格
    2.2.2  代碼優化
    2.2.3  面向對象思想
  2.3  頭文件
  2.4  總結
第3章  Nginx基礎設施
  3.1  常數
    3.1.1  環境信息
    3.1.2  版本信息
    3.1.3  錯誤碼

  3.2  整數類型
    3.2.1  標準整數類型
    3.2.2  自用整數類型
    3.2.3  無效值
  3.3  內存池
    3.3.1  結構定義
    3.3.2  操作函數
    3.3.3  用法示例
  3.4  字元串
    3.4.1  結構定義
    3.4.2  操作函數
    3.4.3  用法示例
  3.5  時間
    3.5.1  結構定義
    3.5.2  操作函數
    3.5.3  用法示例
  3.6  日期
    3.6.1  結構定義
    3.6.2  操作函數
    3.6.3  用法示例
  3.7  運行日誌
    3.7.1  結構定義
    3.7.2  操作函數
    3.7.3  用法示例
  3.8  摘要演算法
    3.8.1  Times33
    3.8.2  CRC
    3.8.3  MurmurHash
    3.8.4  MD5
    3.8.5  SHA-1
  3.9  數據編碼
    3.9.1  Base
    3.9.2  HTML/JSON
  3.10  總結
第4章  Nginx高級數據結構
  4.1  動態數組
    4.1.1  結構定義
    4.1.2  操作函數
    4.1.3  用法示例
  4.2  單向鏈表
    4.2.1  結構定義
    4.2.2  操作函數
    4.2.3  用法示例
  4.3  雙端隊列
    4.3.1  結構定義
    4.3.2  操作函數
    4.3.3  用法示例
  4.4  紅黑樹
    4.4.1  結構定義
    4.4.2  操作函數

    17.1.2  基礎模塊
    17.1.3  核心模塊
    17.1.4  結構關係圖
    17.1.5  存儲模型
  17.2  監聽埠
    17.2.1  結構定義
    17.2.2  解析配置
    17.2.3  啟動監聽
  17.3  處理引擎
    17.3.1  階段定義
    17.3.2  函數原型
    17.3.3  處理函數的存儲方式
    17.3.4  引擎數據結構
    17.3.5  結構關係圖
    17.3.6  引擎的初始化
  17.4  過濾引擎
    17.4.1  函數原型
    17.4.2  過濾函數鏈表
  17.5  運行機制
    17.5.1  會話結構體
    17.5.2  創建會話
    17.5.3  執行引擎
    17.5.4  通用階段處理
    17.5.5  預讀數據
    17.5.6  產生響應數據
    17.5.7  過濾數據
    17.5.8  結束會話
  17.6  開發示例
    17.6.1  discard協議
    17.6.2  time協議
    17.6.3  echo協議
  17.7  總結
第18章  Nginx HTTP機制
  18.1  結構定義
    18.1.1  ngx_http_state_e
    18.1.2  ngx_http_connection_t
    18.1.3  ngx_http_request_t
  18.2  初始化連接
    18.2.1  建立連接
    18.2.2  等待數據
    18.2.3  讀取請求頭
  18.3  執行引擎
    18.3.1  初始化引擎
    18.3.2  通用階段
    18.3.3  改寫階段
    18.3.4  訪問控制階段
    18.3.5  內容產生階段
  18.4  處理請求體
    18.4.1  丟棄緩衝區數據
    18.4.2  讀取並丟棄數據

    18.4.3  讀事件處理函數
    18.4.4  啟動丟棄處理
  18.5  發送數據
    18.5.1  發送初始化
    18.5.2  事件處理函數
  18.6  結束請求
    18.6.1  釋放請求資源
    18.6.2  檢查引用計數結束請求
    18.6.3  檢查狀態結束請求
    18.6.4  綜合處理結束請求
  18.7  總結
第19章  Nginx與設計模式
  19.1  設計模式簡介
  19.2  框架級別的模式
  19.3  業務級別的模式
  19.4  代碼級別的模式
  19.5  總結
第20章  Nginx C++開發
  20.1  語言簡介
  20.2  開發準備
    20.2.1  程序庫
    20.2.2  頭文件
    20.2.3  編程範式
    20.2.4  實現原則
    20.2.5  源碼組織
    20.2.6  編譯腳本
  20.3  封裝類
    20.3.1  基礎設施
    20.3.2  高級數據結構
    20.3.3  功能框架
    20.3.4  請求處理
  20.4  開發示例:content handler
    20.4.1  配置信息類
    20.4.2  業務邏輯類
    20.4.3  模塊集成類
    20.4.4  實現源文件
  20.5  開發示例:filter
    20.5.1  配置信息類
    20.5.2  環境數據類
    20.5.3  業務邏輯類
    20.5.4  模塊集成類
    20.5.5  實現源文件
  20.6  總結
第21章  Nginx JavaScript開發
  21.1  語言簡介
  21.2  模塊簡介
  21.3  開發準備
  21.4  指令簡介
  21.5  功能介面
    21.5.1  運行日誌

    21.5.2  變數
    21.5.3  請求處理
    21.5.4  子請求
    21.5.5  定時器
    21.5.6  流處理
  21.6  開發示例
    21.6.1  content handler
    21.6.2  subrequest
    21.6.3  A/B testing
  21.7  總結
第22章  Nginx Lua開發
  22.1  語言簡介
  22.2  模塊簡介
    22.2.1  http_lua
    22.2.2  stream_lua
    22.2.3  lua-resty-lib
  22.3  開發準備
  22.4  指令簡介
    22.4.1  配置指令
    22.4.2  功能指令
    22.4.3  指令關係圖
  22.5  應用開發流程
  22.6  功能介面
    22.6.1  運行日誌
    22.6.2  時間與日期
    22.6.3  變數
    22.6.4  正則表達式
    22.6.5  請求處理
    22.6.6  請求轉發
    22.6.7  子請求
    22.6.8  定時器
    22.6.9  共享內存
  22.7  開發示例
    22.7.1  content handler
    22.7.2  filter
    22.7.3  upstream
    22.7.4  subrequest
    22.7.5  discard
    22.7.6  echo
  22.8  總結
第23章  Nginx調試與測試
  23.1  調試
    23.1.1  調試器
    23.1.2  調試斷點
    23.1.3  調試日誌
  23.2  功能測試
    23.2.1  測試套件
    23.2.2  測試用例
    23.2.3  運行測試
  23.3  性能測試

    23.3.1  ab
    23.3.2  http_load
    23.3.3  wrk
    23.3.4  Test::Nginx
  23.4  總結
第24章  Nginx性能分析
  24.1  簡介
  24.2  火焰圖
  24.3  分析工具
    24.3.1  使用方式
    24.3.2  處理數據
  24.4  動態追蹤
    24.4.1  CPU分析
    24.4.2  I/O分析
    24.4.3  Memory分析
    24.4.4  觀測工具
  24.5  總結
第25章  結束語
  25.1  本書的遺憾
  25.2  下一步
  25.3  臨別贈言
附錄A 推薦書目
附錄B 字元串格式化
附錄C 開發輔助工具

    4.4.3  用法示例
  4.5  緩衝區
    4.5.1  結構定義
    4.5.2  操作函數
    4.5.3  用法示例
  4.6  數據塊鏈
    4.6.1  結構定義
    4.6.2  操作函數
    4.6.3  用法示例
  4.7  總結
第5章  Nginx開發概述
  5.1  開發示例
    5.1.1  模塊設計
    5.1.2  配置解析
    5.1.3  處理函數
    5.1.4  模塊集成
    5.1.5  編譯腳本
    5.1.6  測試驗證
  5.2  開發流程
    5.2.1  設計
    5.2.2  開發
    5.2.3  編譯
    5.2.4  測試驗證
    5.2.5  調優
    5.2.6  流程圖
  5.3  編譯腳本
    5.3.1  運行機制
    5.3.2  腳本變數
    5.3.3  添加模塊
    5.3.4  腳本格式
    5.3.5  舊式腳本
  5.4  總結
第6章  Nginx模塊體系
  6.1  模塊架構
    6.1.1  結構定義
    6.1.2  模塊的簽名
    6.1.3  模塊的種類
    6.1.4  模塊的函數指針表
    6.1.5  模塊的類圖
    6.1.6  模塊的組織形式
    6.1.7  模塊的靜態載入
    6.1.8  模塊的動態載入
  6.2  配置解析
    6.2.1  結構定義
    6.2.2  基本流程
    6.2.3  存儲模型
    6.2.4  訪問配置數據
    6.2.5  配置數據的位置
    6.2.6  配置數據的解析
    6.2.7  配置數據的合併

    6.2.8  配置指令的類型
  6.3  源碼分析
    6.3.1  ngx_core_module
    6.3.2  ngx_errlog_module
  6.4  總結
第7章  Nginx功能框架
  7.1  框架簡介
    7.1.1  模塊分類
    7.1.2  處理流程
    7.1.3  請求的處理階段
    7.1.4  請求結構體
    7.1.5  請求的環境數據
  7.2  處理引擎
    7.2.1  函數原型
    7.2.2  處理函數的存儲方式
    7.2.3  內容處理函數
    7.2.4  引擎的數據結構
    7.2.5  引擎的初始化
    7.2.6  引擎的運行機制
    7.2.7  日誌階段的處理
  7.3  過濾引擎
    7.3.1  函數原型
    7.3.2  過濾函數鏈表
    7.3.3  過濾函數的順序
    7.3.4  過濾鏈表的運行機制
    7.3.5  請求體過濾
  7.4  源碼分析
    7.4.1  ngx_http_static_module
    7.4.2  ngx_http_not_modified_filter_module
  7.5  總結
第8章  Nginx請求處理
  8.1  狀態碼
  8.2  請求結構體
  8.3  請求行
    8.3.1  請求方法
    8.3.2  協議版本號
    8.3.3  資源標識符
  8.4  請求頭
  8.5  請求體
    8.5.1  結構定義
    8.5.2  操作函數
  8.6  響應頭
    8.6.1  結構定義
    8.6.2  操作函數
  8.7  響應體
  8.8  源碼分析
    8.8.1  ngx_http_static_module
    8.8.2  ngx_http_not_modified_filter_module
  8.9  開發示例:content handler
    8.9.1  模塊設計

    8.9.2  配置數據
    8.9.3  處理函數
    8.9.4  註冊函數
    8.9.5  模塊集成
    8.9.6  編譯腳本
    8.9.7  測試驗證
  8.10  開發示例:filter
    8.10.1  模塊設計
    8.10.2  配置數據
    8.10.3  環境數據
    8.10.4  註冊過濾函數
    8.10.5  過濾響應頭
    8.10.6  過濾響應體
    8.10.7  模塊集成
    8.10.8  編譯腳本
    8.10.9  測試驗證
  8.11  總結
第9章  Nginx請求轉發
  9.1  框架簡介
    9.1.1  工作原理
    9.1.2  請求結構體
    9.1.3  上游結構體
    9.1.4  上游配置參數
  9.2  請求轉發
    9.2.1  回調函數
    9.2.2  初始化
    9.2.3  設置參數
    9.2.4  啟動連接
    9.2.5  處理響應頭
    9.2.6  處理響應體
  9.3  負載均衡
    9.3.1  結構定義
    9.3.2  初始化模塊入口
    9.3.3  初始化地址列表
    9.3.4  初始化演算法
    9.3.5  執行演算法
  9.4  源碼分析
    9.4.1  ngx_http_memcached_module
    9.4.2  ngx_http_upstream_ip_hash_module
  9.5  開發示例:upstream
    9.5.1  模塊設計
    9.5.2  配置數據
    9.5.3  上行數據
    9.5.4  下行數據
    9.5.5  啟動轉發
    9.5.6  註冊函數
    9.5.7  模塊集成
    9.5.8  編譯腳本
    9.5.9  測試驗證
  9.6  開發示例:balance

    9.6.1  模塊設計
    9.6.2  配置數據
    9.6.3  演算法數據結構
    9.6.4  模塊入口
    9.6.5  演算法實現
    9.6.6  模塊集成
    9.6.7  編譯腳本
    9.6.8  測試驗證
  9.7  總結
第10章  Nginx子請求
  10.1  框架簡介
    10.1.1  工作原理
    10.1.2  請求結構體
    10.1.3  回調函數
    10.1.4  待處理請求鏈表
    10.1.5  子請求存儲結構
  10.2  運行機制
    10.2.1  創建子請求
    10.2.2  處理引擎
    10.2.3  數據整理
  10.3  開發示例
    10.3.1  模塊設計
    10.3.2  配置數據
    10.3.3  環境數據
    10.3.4  回調函數
    10.3.5  處理函數
    10.3.6  註冊函數
    10.3.7  測試驗證
  10.4  總結
第11章  Nginx變數
  11.1  結構定義
    11.1.1  變數
    11.1.2  複雜變數
    11.1.3  變數的存儲
    11.1.4  請求結構體
  11.2  操作變數
    11.2.1  添加變數
    11.2.2  獲取變數
    11.2.3  修改變數
    11.2.4  編譯複雜變數
    11.2.5  獲取複雜變數
  11.3  開發示例:變數
    11.3.1  模塊設計
    11.3.2  定義變數
    11.3.3  添加變數
    11.3.4  獲取變數
    11.3.5  測試驗證
  11.4  開發示例:複雜變數
    11.4.1  模塊設計
    11.4.2  定義複雜變數

    11.4.3  編譯複雜變數
    11.4.4  獲取複雜變數
    11.4.5  測試驗證
  11.5  總結
第12章  Nginx內存管理機制
  12.1  基本系統調用
    12.1.1  malloc
    12.1.2  posix_memalign
    12.1.3  free
  12.2  塊式內存池
    12.2.1  結構定義
    12.2.2  常量定義
    12.2.3  創建內存池
    12.2.4  分配內存
    12.2.5  分配大塊內存
    12.2.6  分配小塊內存
    12.2.7  釋放內存
    12.2.8  清理機制
    12.2.9  清空內存池
    12.2.10  銷毀內存池
  12.3  頁式內存池
    12.3.1  結構定義
    12.3.2  常量定義
    12.3.3  初始化內存池
    12.3.4  分配內存
    12.3.5  分配大塊內存
    12.3.6  分配小塊內存
    12.3.7  釋放內存
  12.4  總結
第13章  Nginx進程機制
  13.1  基本系統調用
    13.1.1  errno
    13.1.2  getrlimit
  13.2  進程系統調用
    13.2.1  getpid
    13.2.2  fork
    13.2.3  waitpid
  13.3  信號系統調用
    13.3.1  kill
    13.3.2  sigaction
    13.3.3  sigsuspend
  13.4  結構定義
    13.4.1  ngx_cycle_t
    13.4.2  ngx_core_conf_t
    13.4.3  ngx_process_t
  13.5  全局變數
    13.5.1  命令行相關
    13.5.2  操作系統相關
    13.5.3  進程功能相關
    13.5.4  信號功能相關

  13.6  啟動過程
    13.6.1  基本流程
    13.6.2  解析命令行
    13.6.3  版本和幫助信息
    13.6.4  初始化cycle
    13.6.5  測試配置
    13.6.6  發送信號
    13.6.7  守護進程化
    13.6.8  啟動工作進程
    13.6.9  流程圖
  13.7  信號處理
    13.7.1  信號處理函數
    13.7.2  發送信號
    13.7.3  處理信號
  13.8  單進程模式
    13.8.1  single進程
    13.8.2  single進程流程圖
  13.9  多進程模式
    13.9.1  產生子進程
    13.9.2  master進程
    13.9.3  master進程流程圖
    13.9.4  worker進程
    13.9.5  worker進程流程圖
  13.10  總結
第14章  Nginx進程間通信機制
  14.1  基本系統調用
    14.1.1  atomic
    14.1.2  sched_yield
    14.1.3  semaphore
    14.1.4  mmap
  14.2  共享內存(Ⅰ)
    14.2.1  結構定義
    14.2.2  創建共享內存
    14.2.3  使用共享內存
  14.3  自旋鎖
    14.3.1  自旋鎖定
    14.3.2  解除鎖定
    14.3.3  使用自旋鎖
  14.4  互斥鎖
    14.4.1  結構定義
    14.4.2  創建互斥鎖
    14.4.3  互斥鎖定
    14.4.4  解除鎖定
    14.4.5  銷毀互斥鎖
    14.4.6  使用互斥鎖
  14.5  讀寫鎖
    14.5.1  寫鎖定
    14.5.2  讀鎖定
    14.5.3  解除鎖定
    14.5.4  降級鎖定

    14.5.5  使用讀寫鎖
  14.6  共享內存(Ⅱ)
    14.6.1  結構定義
    14.6.2  添加共享內存
    14.6.3  創建共享內存
    14.6.4  使用共享內存
  14.7  總結
第15章  Nginx事件機制
  15.1  基本系統調用
    15.1.1  errno
    15.1.2  ioctl
    15.1.3  setitimer
    15.1.4  gettimeofday
  15.2  socket系統調用
    15.2.1  socket
    15.2.2  bind
    15.2.3  listen
    15.2.4  accept
    15.2.5  connect
    15.2.6  recv
    15.2.7  send
    15.2.8  setsockopt
    15.2.9  close
    15.2.10  函數關係圖
  15.3  epoll系統調用
    15.3.1  epoll_create
    15.3.2  epoll_ctl
    15.3.3  epoll_wait
    15.3.4  LT和ET
    15.3.5  函數關係圖
  15.4  結構定義
    15.4.1  ngx_event_t
    15.4.2  ngx_connection_t
    15.4.3  ngx_listening_t
    15.4.4  ngx_cycle_t
    15.4.5  ngx_os_io_t
    15.4.6  ngx_event_actions_t
    15.4.7  ngx_posted_events
    15.4.8  關係圖
  15.5  定時器
    15.5.1  紅黑樹
    15.5.2  操作函數
    15.5.3  超時處理
  15.6  模塊體系
    15.6.1  函數指針表
    15.6.2  模塊的組織形式
    15.6.3  核心配置
    15.6.4  epoll模塊
  15.7  全局變數
    15.7.1  更新時間相關

    15.7.2  事件機制相關
    15.7.3  負載均衡相關
    15.7.4  統計相關
  15.8  進程初始化
    15.8.1  初始化函數
    15.8.2  基本參數初始化
    15.8.3  事件機制初始化
    15.8.4  連接池初始化
    15.8.5  監聽埠初始化
    15.8.6  初始化流程圖
  15.9  運行機制
    15.9.1  添加事件
    15.9.2  刪除事件
    15.9.3  處理事件
    15.9.4  接受連接
    15.9.5  負載均衡
  15.10  避免阻塞
  15.11  總結
第16章  Nginx多線程機制
  16.1  eventfd系統調用
  16.2  pthread系統調用
  16.3  結構定義
    16.3.1  ngx_thread_task_t
    16.3.2  ngx_thread_pool_queue_t
    16.3.3  ngx_thread_pool_t
    16.3.4  結構關係圖
  16.4  事件通知
    16.4.1  函數介面
    16.4.2  初始化
    16.4.3  發送通知
    16.4.4  處理通知
  16.5  運行機制
    16.5.1  完成任務隊列
    16.5.2  創建線程池
    16.5.3  創建任務
    16.5.4  投遞任務
    16.5.5  執行任務
    16.5.6  任務完成回調
    16.5.7  銷毀線程池
  16.6  開發示例
    16.6.1  模塊設計
    16.6.2  配置數據
    16.6.3  線程任務
    16.6.4  任務完成回調
    16.6.5  投遞任務
    16.6.6  測試驗證
  16.7  總結
第17章  Nginx Stream機制
  17.1  模塊體系
    17.1.1  函數指針表

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032