Nginx核心知識100講-陶輝-極客時間

wuwu發表於2019-04-26

極客時間出品的《Nginx核心知識100講》由陶輝所作,陶輝是《深入理解Nginx》作者,智鏈達CTO。本專欄課程講百萬併發下的Nginx效能優化之道。

Nginx核心知識100講 封面圖

《人工智慧基礎課》課程背景

Nginx 很火,因為它就像一個萬能藥,在任何存在效能需求的場合總能找見它的身影,它可以輕鬆在百萬併發連線下實現高吞吐量的 Web 服務。同時,類似於 OpenResty 和 Tengine 這樣的第三方模組群,進一步發展出了新生態,使 Nginx 的應用進一步向應用防火牆、CDN 等領域擴充套件。

網路上關於 Nginx 的使用介紹雖然非常多,但存在兩個問題:

一、僅從如何使用層面介紹,沒有把離散的知識點串成線,這導致大家難以應對未出現過的、個性化的定製場景。

二、沒有成體系的效能優化知識介紹,而在企業生產環境下,我們往往需要從應用到系統的完整優化方案。

本課程則致力於解決以上兩個問題,課程講師陶輝過往在華為、騰訊、思科、阿里巴巴等知名企業進行 Nginx 模組開發及效能優化的多年實戰經驗,使得他可以從 HTTP 應用層的視角、分散式叢集的視角、硬體及作業系統核心優化的視角為大家體系化地解讀 Nginx 的核心知識,幫助大家從 Nginx 的初級使用者成長為高階使用者。

在這個學習的過程中,陶輝老師也會把自己的學習方法論分享給大家。掌握更多的方法論,進而擴充套件自己的方法論,這也是進一步深入學習 Nginx 以及其他技術的有效方式。

《人工智慧基礎課》講師簡介

Nginx核心知識100講 作者陶輝

Nginx核心知識100講 作者陶輝

陶輝,杭州智鏈達資料有限公司 CTO 兼聯合創始人,著有《深入理解 Nginx:模組開發與架構解析》一書。

10 餘年網際網路一線工作經驗,畢業於西安交通大學電腦科學與技術專業,先後在華為中央軟體部、騰訊 QQ 空間、思科中國 CRDC、阿里雲飛天團隊工作。
研究方向為介於 Iaas 和 PaaS 間的彈性計算,多年以來專注於 Nginx 的定製化應用,對 Nginx 的設計與特性有深刻認識,實戰經驗豐富,編寫過許多優秀的 Nginx 模組並應用於企業級產品中,同時撰寫了大量關於 Nginx 的技術文章。擅長 Linux 下高效能伺服器的開發,以及分散式環境下海量資料儲存的設計開發。

《人工智慧基礎課》課程目錄

第一章:初識Nginx (19講)

01 | 課程綜述

02 | Nginx 適用於哪些場景?

03 | Nginx 出現的歷史背景

04 | 為什麼用 Nginx:它的 5 個主要優點

05 | Nginx 的四個主要組成部分

06 | Nginx 的版本釋出歷史

07 | 選擇哪一個 Nginx 發行版本?

08 | 編譯出適合自己的 Nginx

09 | Nginx 配置檔案的通用語法介紹

10 | Nginx 命令列及演示:過載、熱部署、日誌切割

11 | 用 Nginx 搭建一個可用的靜態資源 Web 伺服器

12 | 用 Nginx 搭建一個具備快取功能的反向代理服務

13 | 用 GoAccess 實現視覺化並實時監控 access 日誌

14 | 從網路原理來看 SSL 安全協議

15 | 對稱加密與非對稱加密各自的應用場景

16 | SSL 證照的公信力是如何保證的?

17 | SSL 協議握手時 Nginx 的效能瓶頸在哪裡?

18 | 用免費 SSL 證照實現一個 HTTPS 站點

19 | 基於 OpenResty 用 Lua 語言實現簡單服務

第二章:Nginx架構基礎 (22講)

20 | Nginx的請求處理流程

21 | Nginx的程式結構

22 | Nginx的程式結構例項演示

23 | 使用訊號管理Nginx的父子程式

24 | reload過載配置檔案的真相

25 | 熱升級的完整流程

26 | 優雅地關閉worker程式

27 | 網路收發與Nginx事件間的對應關係

28 | Nginx網路事件例項演示

29 | Nginx的事件驅動模型

30 | epoll的優劣及原理

31 | Nginx的請求切換

32 | 同步&非同步、阻塞&非阻塞之間的區別

33 | Nginx的模組究竟是什麼?

34 | Nginx模組的分類

35 | Nginx如何通過連線池處理網路請求

36 | 記憶體池對效能的影響

37 | 所有worker程式協同工作的關鍵:共享記憶體

38 | 用好共享記憶體的工具:Slab管理器

39 | 雜湊表的max_size與bucket_size如何配置

40 | Nginx中最常用的容器:紅黑樹

41 | 使用動態模組來提升運維效率

第三章:詳解HTTP模組 (40講)

42 | 第三章內容介紹

43 | 衝突的配置指令以誰為準?

44 | Listen指令的用法

45 | 處理HTTP請求頭部的流程

46 | Nginx中的正規表示式

47 | 如何找到處理請求的server指令塊

48 | 詳解HTTP請求的11個階段

49 | 11個階段的順序處理

50 | postread階段:獲取真實客戶端地址的realip模組

51 | rewrite階段的rewrite模組:return指令

52 | rewrite階段的rewrite模組:重寫URL

53 | rewrite階段的rewrite模組:條件判斷

54 | find_config階段:找到處理請求的location指令塊

55 | preaccess階段:對連線做限制的limit_conn模組

56 | preaccess階段:對請求做限制的limit_req模組

57 | access階段:對ip做限制的access模組

58 | access階段:對使用者名稱密碼做限制的auth_basic模組

59 | access階段:使用第三方做許可權控制的auth_request模組

60 | access階段的satisfy指令

61 | precontent階段:按序訪問資源的try_files模組

62 | 實時拷貝流量:precontent階段的mirror模組

63 | content階段:詳解root和alias指令

64 | static模組提供的3個變數

65 | static模組對url不以斜槓結尾卻訪問目錄的做法

66 | index和autoindex模組的用法

67 | 提升多個小檔案效能的concat模組

68 | access日誌的詳細用法

69 | HTTP過濾模組的呼叫流程

70 | 用過濾模組更改響應中的字串:sub模組

71 | 用過濾模組在http響應的前後新增內容:addition模組

72 | Nginx變數的執行原理

73 | HTTP框架提供的請求相關的變數

74 | HTTP框架提供的其他變數

75 | 使用變數防盜鏈的referer模組

76 | 使用變數實現防盜鏈功能實踐:secure_link模組

77 | 為複雜的業務生成新的變數:map模組

78 | 通過變數指定少量使用者實現AB測試:split_client模組

79 | 根據IP地址範圍的匹配生成新變數:geo模組

80 | 使用變數獲得使用者的地理位置:geoip模組

81 | 對客戶端使用keepalive提升連線效率

第四章:反向代理與負載均衡 (38講)

82 | 反向代理與負載均衡原理

83 | 負載均衡策略:round-robin

84 | 負載均衡雜湊演算法:ip_hash與hash模組

85 | 一致性雜湊演算法:hash模組

86 | 最少連線演算法以及如何跨worker程式生效

87 | http upstream模組提供的變數

88 | http反向代理proxy處理請求的流程

89 | proxy模組中的proxy_pass指令

90 | 根據指令修改發往上游的請求

91 | 接收使用者請求包體的方式

92 | 與上游服務建立連線

93 | 接收上游的響應

94 | 處理上游的響應頭部

95 | 上游出現失敗時的容錯方案

96 | 對上游使用SSL連線

97 | 用好瀏覽器的快取

98 | Nginx決策瀏覽器過期快取是否有效

99 | 快取的基本用法

100 | 對客戶端請求的快取處理流程

101 | 接收上游響應的快取處理流程

102 | 如何減輕快取失效時上游服務的壓力

103 | 及時清除快取

104 | uwsgi、fastcgi、scgi指令的對照表

105 | memcached反向代理的用法

106 | 搭建websocket反向代理

107 | 用分片提升快取效率

108 | open file cache提升系統效能

109 | http2協議介紹

110 | 搭建http2服務並推送資源

111 | grpc反向代理

112 | stream四層反向代理的7個階段及常用變數

113 | proxy protocol協議與realip模組

114 | 限併發連線、限IP、記日誌

115 | stream四層反向代理處理SSL下游流量

116 | stream_preread模組取出SSL關鍵資訊

117 | stream proxy四層反向代理的用法

118 | UDP反向代理

119 | 透傳IP地址的3個方案

第五章:Nginx的系統層效能優化 (18講)

120 | 效能優化方法論

121 | 如何高效使用CPU

122 | 多核間的負載均衡

123 | 控制TCP三次握手引數

124 | 建立TCP連線的優化

125 | 滑動視窗與緩衝區

126 | 優化緩衝區與傳輸效率

127 | 慢啟動與擁塞視窗

128 | TCP協議的keepalive功能

129 | 減少關閉連線時的time_wait埠數量

130 | lingering_close延遲關閉TCP連線

131 | 應用層協議的優化

132 | 磁碟IO的優化

133 | 減少磁碟讀寫次數

134 | 零拷貝與gzip_static模組

135 | 用tcmalloc優化記憶體分配

136 | 使用Google PerfTools分析Nginx

137 | 使用stub_status模組監控Nginx的狀態

第六章:從原始碼視角深入使用Nginx與OpenResty (18講)

138 | 第三方模組原始碼的閱讀

139 | Nginx的啟動流程

140 | HTTP第三方模組的初始化

141 | if指令是邪惡的嗎?

142 | 解讀Nginx的核心轉儲檔案

143 | 通過debug日誌定位問題

144 | OpenResty概述

145 | OpenResty中的Nginx模組與Lua模組

146 | 如何在Nginx中嵌入Lua程式碼

147 | OpenResty中Lua與C程式碼互動的原理

148 | 獲取、修改請求與響應的SDK

149 | 工具型別的SDK

150 | 同步且非阻塞的底層SDK:cosocket

151 | 基於協程的併發程式設計SDK

152 | 定時器及時間相關的SDK

153 | share.DICT基於共享記憶體的字典

154 | 子請求的使用方法

155 | 基於OpenResty的WAF防火牆

訂閱價格:

為回報猿人學的粉絲,所有通過我分享的二維碼購買的使用者,請加我微訊號:dismissmewp,備註:返現。

享受完其它優惠後,我再給大家立即返¥12元現金。

Nginx核心知識100講 課程返現

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章