〖课程介绍〗 
Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影,它可以轻松在百万并发连接下实现高吞吐量的 Web 服务。同时,类似于OpenResty 和 Tengine 这样的第三方模块群,进一步发展出了新生态,使Nginx 的应用进一步向应用防火墙、CDN 等领域扩展。 
网络上关于 Nginx 的使用介绍虽然非常多,但存在两个问题: 
        一、仅从如何使用层面介绍,没有把离散的知识点串成线,导致大家难以应对未出现过的、个性化的定制场景。 
       二、没有成体系的性能优化知识介绍,而在企业生产环境下,我们往往需要从应用到系统的完整优化方案。 
本课程则致力于解决以上两个问题,课程讲师陶辉过往在华为、腾讯、思科、阿里巴巴等知名企业进行 Nginx 模块开发及性能优化的多年实战经验,使得他可以从 HTTP 应用层的视角、分布式集群的视角、硬件及操作系统核优化的视角为大家体系化地解读 Nginx 的核心知识,帮助大家从 Nginx 的初级使用者成长为高阶使用者。 
〖课程目录〗 
        第一章:初识Nginx4 F* k1 K' w. C8 A9 E, \$ R 
        01 | 课程综述 
        02 | Nginx 适用于哪些场景?& _4 \0 Q# u: D$ I1 p) R 
        03 | Nginx 出现的历史背景0 f% D: N3 |4 t& z# O 
        04 | 为什么用 Nginx:它的 5 个主要优点 
        05 | Nginx 的四个主要组成部分" [# x" ~: B7 W: o' V 
        06 | Nginx 的版本发布历史; m7 t! w1 N1 n, ~, _$ e( N1 n3 q 
        07 | 选择哪一个 Nginx 发行版本? 
        08 | 编译出适合自己的 Nginx# ~: i3 q3 Z+ s/ R  m  D 
        09 | Nginx 配置文件的通用语法介绍 
        10 | Nginx 命令行及演示:重载、热部署、日志切割5 O# O6 r; f) v6 t4 j+ M! B) n; i 
        11 | 用 Nginx 搭建一个可用的静态资源 Web 服务器2 E% C3 \$ M7 ^ 
        12 | 用 Nginx 搭建一个具备缓存功能的反向代理服务! D+ U$ l: r! N* [! M6 a/ u; A* F 
        13 | 用 GoAccess 实现可视化并实时监控 access 日志 
        14 | 从网络原理来看 SSL 安全协议 
        15 | 对称加密与非对称加密各自的应用场景1 o9 g4 \, i1 B+ f# ^4 h  G/ P 
        16 | SSL 证书的公信力是如何保证的?9 U) }9 `9 b2 P: L! `5 o$ H% u 
        17 | SSL 协议握手时 Nginx 的性能瓶颈在哪里?7 z* H) S- I- I) _ 
        18 | 用免费 SSL 证书实现一个 HTTPS 站点 
        19 | 基于 OpenResty 用 Lua 语言实现简单服务 
, v) U9 |7 d1 |3 o0 _+ y 
        第二章:Nginx架构基础6 S8 c, N" A/ N8 P 
        20 | Nginx的请求处理流程1 V! {* r) @  L$ R2 s0 P! @ 
        21 | Nginx的进程结构 
        22 | Nginx的进程结构实例演示+ B8 z7 z. d* ~/ y 
        23 | 使用信号管理Nginx的父子进程% z( {% P; B" F  v 
        24 | reload重载配置文件的真相 
        25 | 热升级的完整流程: g5 c4 R/ f  J5 Z2 o! a. } 
        26 | 优雅地关闭worker进程 
        27 | 网络收发与Nginx事件间的对应关系 
        28 | Nginx网络事件实例演示 
        29 | Nginx的事件驱动模型  d1 P) ]( |$ F1 i) O, } 
        30 | epoll的优劣及原理; Z! Z, s/ c/ c. Z1 K) Y 
        31 | Nginx的请求切换. z# x/ O3 T# e 
        32 | 同步&异步、阻塞&非阻塞之间的区别0 U8 i" O% V% _# h2 O" i/ G4 r 
        33 | Nginx的模块究竟是什么? 
        34 | Nginx模块的分类 
        35 | Nginx如何通过连接池处理网络请求( }; B% A( {1 o* p* g 
        36 | 内存池对性能的影响  v, n; s8 N) V; F! ` 
        37 | 所有worker进程协同工作的关键:共享内存 
        38 | 用好共享内存的工具:Slab管理器 
        39 | 哈希表的max_size与bucket_size如何配置 
        40 | Nginx中最常用的容器:红黑树 
        41 | 使用动态模块来提升运维效率5 j1 N) `' l2 e. I* n% k; c 
1 D2 O" U" _) M. d 
        第三章:详解HTTP模块 
        42 | 第三章内容介绍 
        43 | 冲突的配置指令以谁为准?  Q0 N% W5 n' V$ k3 Z* p" I/ r2 Y 
        44 | Listen指令的用法6 B0 Y+ E3 o& g9 A" D0 U 
        45 | 处理HTTP请求头部的流程 
        46 | Nginx中的正则表达式 
        47 | 如何找到处理请求的server指令块) j- k, U& p8 m$ }" ]$ [8 C0 n 
        48 | 详解HTTP请求的11个阶段 
        49 | 11个阶段的顺序处理' I, e" m! p  _+ t2 n 
        50 | postread阶段:获取真实客户端地址的realip模块 
        51 | rewrite阶段的rewrite模块:return指令" k& `5 ], W8 W) F 
        52 | rewrite阶段的rewrite模块:重写URL% z3 M, H% p: F5 S! w 
        53 | rewrite阶段的rewrite模块:条件判断8 A- s6 X7 g, W" D 
        54 | find_config阶段:找到处理请求的location指令块8 V, {; R, y+ R' w8 q8 L 
        55 | preaccess阶段:对连接做限制的limit_conn模块 
        56 | preaccess阶段:对请求做限制的limit_req模块 
        57 | access阶段:对ip做限制的access模块 
        58 | access阶段:对用户名密码做限制的auth_basic模块 
        59 | access阶段:使用第三方做权限控制的auth_request模块 
        60 | access阶段的satisfy指令/ @' g+ M, a4 q  |1 A. E! P 
        61 | precontent阶段:按序访问资源的try_files模块+ P3 `- P- h/ h: r: K) o 
        62 | 实时拷贝流量:precontent阶段的mirror模块" v7 U* R- l' x! N 
        63 | content阶段:详解root和alias指令 
        64 | static模块提供的3个变量 
        65 | static模块对url不以斜杠结尾却访问目录的做法 
        66 | index和autoindex模块的用法 
        67 | 提升多个小文件性能的concat模块 
        68 | access日志的详细用法 
        69 | HTTP过滤模块的调用流程 
        70 | 用过滤模块更改响应中的字符串:sub模块' j& b; s) o( Y 
        71 | 用过滤模块在http响应的前后添加内容:addition模块 
        72 | Nginx变量的运行原理! I( W  @, f3 W* l( l 
        73 | HTTP框架提供的请求相关的变量( T# |) T& |* ~# D 
        74 | HTTP框架提供的其他变量 
        75 | 使用变量防盗链的referer模块 
        76 | 使用变量实现防盗链功能实践:secure_link模块 
        77 | 为复杂的业务生成新的变量:map模块 
        78 | 通过变量指定少量用户实现AB测试:split_client模块. v- l0 O8 M# P) L 
        79 | 根据IP地址范围的匹配生成新变量:geo模块 
        80 | 使用变量获得用户的地理位置:geoip模块 
        81 | 对客户端使用keepalive提升连接效率) e2 G" s5 d+ y4 `4 d' x3 H) h 
' U1 K( f* o+ Z9 w3 D3 I6 o& p 
        第四章:反向代理与负载均衡 
        82 | 反向代理与负载均衡原理 
        83 | 负载均衡策略:round-robin 
        84 | 负载均衡哈希算法:ip_hash与hash模块; M3 G5 P& }) ~" p# r5 h# a 
        85 | 一致性哈希算法:hash模块  M2 [* |9 X; _3 n 
        86 | 最少连接算法以及如何跨worker进程生效$ t' M: e* k( M6 A. u9 {* I 
        87 | http upstream模块提供的变量7 j$ Z7 m1 H# `2 Z# C 
        88 | http反向代理proxy处理请求的流程' @  v" b: C, O2 Y 
        89 | proxy模块中的proxy_pass指令 
        90 | 根据指令修改发往上游的请求% o' C3 @2 p+ c. C; a! ]# Z 
        91 | 接收用户请求包体的方式3 B+ v5 q+ ^" ]" v: J" F4 g! r9 ] 
        92 | 与上游服务建立连接. L2 d2 F: H, w: G 
        93 | 接收上游的响应 
        94 | 处理上游的响应头部 
        95 | 上游出现失败时的容错方案" K: @; y& X% {: k  i' \0 D$ Y 
        96 | 对上游使用SSL连接7 s; z0 u0 N. ^+ P, i" _ 
        97 | 用好浏览器的缓存- m( i5 P; G3 o1 u+ H" W* b 
        98 | Nginx决策浏览器过期缓存是否有效 
        99 | 缓存的基本用法 
        100 | 对客户端请求的缓存处理流程 
        101 | 接收上游响应的缓存处理流程 
        102 | 如何减轻缓存失效时上游服务的压力% Q/ F  H5 R6 X2 l8 |9 b$ ~ 
        103 | 及时清除缓存6 w5 h2 K9 \" a; E7 G" t/ E 
        104 | uwsgi、fastcgi、scgi指令的对照表# q1 Q; W7 w% _$ Y' |! L 
        105 | memcached反向代理的用法 
        106 | 搭建websocket反向代理( o' E2 q8 ]$ Z# L& `+ r5 P( o 
        107 | 用分片提升缓存效率 
        108 | open file cache提升系统性能 
        109 | http2协议介绍 
        110 | 搭建http2服务并推送资源7 _' N/ K' [/ M" b7 Q7 F! C" | 
        111 | grpc反向代理2 X# l- K- C( N: B& _( S 
        112 | stream四层反向代理的7个阶段及常用变量 
        113 | proxy protocol协议与realip模块6 \, v; Q# G2 C* P5 @2 h5 g 
        114 | 限并发连接、限IP、记日志+ C! n7 @0 b0 j1 h0 j8 P 
        115 | stream四层反向代理处理SSL下游流量 
        116 | stream_preread模块取出SSL关键信息" ~" K+ Y1 ]) {2 | 
        117 | stream proxy四层反向代理的用法 
        118 | UDP反向代理) W! }, e% |# c6 d- P% I# Y9 J 
        119 | 透传IP地址的3个方案& ?$ d- T# Z5 r% v8 \: f. p 
 
        第五章:Nginx的系统层性能优化, `6 r# }  M4 N- H! a+ w% c) i2 y# E: z 
        120 | 性能优化方法论 
        121 | 如何高效使用CPU 
        122 | 多核间的负载均衡1 w9 Z- }3 g/ f2 \1 \ 
        123 | 控制TCP三次握手参数; \7 i2 @6 {8 U! l 
        124 | 建立TCP连接的优化" h* h1 s; e9 _% w 
        125 | 滑动窗口与缓冲区+ ~9 S  H7 ~8 @! i/ `& g4 F 
        126 | 优化缓冲区与传输效率  p. c( q/ C  M  M3 u7 e7 t; _ 
        127 | 慢启动与拥塞窗口6 T5 h+ Y! I6 `" ? 
        128 | TCP协议的keepalive功能3 x' M! Y. y# n+ g! @0 U 
        129 | 减少关闭连接时的time_wait端口数量  ?( x. P0 t- U2 k1 J 
        130 | lingering_close延迟关闭TCP连接 
        131 | 应用层协议的优化 
        132 | 磁盘IO的优化/ o4 T% y& i5 _; i/ I+ K0 z 
        133 | 减少磁盘读写次数 
        134 | 零拷贝与gzip_static模块 
        135 | 用tcmalloc优化内存分配 
        136 | 使用Google PerfTools分析Nginx 
        137 | 使用stub_status模块监控Nginx的状态 
; w. `% T- T' f2 y1 L- K# D5 I 
        第六章:从源码视角深入使用Nginx与OpenResty  A& x* C- a, z' W* _* g 
        138 | 第三方模块源码的阅读. w8 y' L  Z1 x1 m5 _* s# K 
        139 | Nginx的启动流程+ t  y1 w) t5 X9 a0 q, Y/ E) k- | 
        140 | HTTP第三方模块的初始化7 P* f9 a1 A! J6 Z" R 
        141 | if指令是邪恶的吗?' s' r: p3 C. ]/ O8 { 
        142 | 解读Nginx的核心转储文件 
        143 | 通过debug日志定位问题 
        144 | OpenResty概述 
        145 | OpenResty中的Nginx模块与Lua模块 
        146 | 如何在Nginx中嵌入Lua代码 
        147 | OpenResty中Lua与C代码交互的原理! M4 t; F# g* m 
        148 | 获取、修改请求与响应的SDK0 z- ^. ]; t1 }) p3 C7 c 
        149 | 工具类型的SDK 
        150 | 同步且非阻塞的底层SDK:cosocket 
        151 | 基于协程的并发编程SDK 
        152 | 定时器及时间相关的SDK 
        153 | share.DICT基于共享内存的字典 
        154 | 子请求的使用方法7 F  p8 p7 V8 p 
        155 | 基于OpenResty的WAF防火墙 
 
 
〖下载地址〗: 
 
 
 
 
 |   
 
 
 
 |