極客時間出品的《Nginx核心知識100講》由陶輝所作,陶輝是《深入理解Nginx》作者,智鏈達CTO。本專欄課程講百萬併發下的Nginx效能優化之道。
《人工智慧基礎課》課程背景
Nginx 很火,因為它就像一個萬能藥,在任何存在效能需求的場合總能找見它的身影,它可以輕鬆在百萬併發連線下實現高吞吐量的 Web 服務。同時,類似於 OpenResty 和 Tengine 這樣的第三方模組群,進一步發展出了新生態,使 Nginx 的應用進一步向應用防火牆、CDN 等領域擴充套件。
網路上關於 Nginx 的使用介紹雖然非常多,但存在兩個問題:
一、僅從如何使用層面介紹,沒有把離散的知識點串成線,這導致大家難以應對未出現過的、個性化的定製場景。
二、沒有成體系的效能優化知識介紹,而在企業生產環境下,我們往往需要從應用到系統的完整優化方案。
本課程則致力於解決以上兩個問題,課程講師陶輝過往在華為、騰訊、思科、阿里巴巴等知名企業進行 Nginx 模組開發及效能優化的多年實戰經驗,使得他可以從 HTTP 應用層的視角、分散式叢集的視角、硬體及作業系統核心優化的視角為大家體系化地解讀 Nginx 的核心知識,幫助大家從 Nginx 的初級使用者成長為高階使用者。
在這個學習的過程中,陶輝老師也會把自己的學習方法論分享給大家。掌握更多的方法論,進而擴充套件自己的方法論,這也是進一步深入學習 Nginx 以及其他技術的有效方式。
《人工智慧基礎課》講師簡介
陶輝,杭州智鏈達資料有限公司 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元現金。
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***