01 | 课程综述02 | Nginx适用于哪些场景?03 | Nginx出现的历史背景04 | 为什么用Nginx:它的 5 个主要优点05 | Nginx的四个主要组成部分06 | Nginx的版本发布历史07 | 选择哪一个Nginx发行版本?08 | 编译出适合自己的Nginx09 | 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语言实现简单服务
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 | 使用动态模块来提升运维效率
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模块:重写URL53 | 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提升连接效率
82 | 反向代理与负载均衡原理83 | 负载均衡策略:round-robin84 | 负载均衡哈希算法:ip_hash与hash模块85 | 一致性哈希算法:hash模块86 | 最少连接算法以及如何跨worker进程生效87 | upstream模块提供的变量88 | 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 | HTTP/2协议介绍110 | 搭建HTTP/2服务并推送资源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个方案
120 | 性能优化方法论121 | 如何高效使用CPU122 | 多核间的负载均衡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分析Nginx137 | 使用stub_status模块监控Nginx的状态
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 | 获取、修改请求与响应的SDK149 | 工具类型的SDK150 | 同步且非阻塞的底层SDK:cosocket151 | 基于协程的并发编程SDK152 | 定时器及时间相关的SDK153 | share.DICT基于共享内存的字典154 | 子请求的使用方法155 | 基于OpenResty的WAF防火墙&结课测试