陶辉Nginx核心知识100讲

陶辉Nginx核心知识100讲

课程收获:基础知识详解及核心架构剖析;搭建支持百万高并发的 Nginx 服务;从内核优化到源码解读的全方位拆解;OpenResty + Nginx 开发实战。

最后更新:2019-04-24 09:01:42

推荐指数

免费教程 充值会员 立即下载

教程详情

基础要求

  熟练使用 Linux 命令行相关操作;

  掌握 HTTP 等基本的网络协议;

  了解 Web 服务器的基础知识并自己搭建过网站。

课程收获

  基础知识详解及核心架构剖析;

  搭建支持百万高并发的 Nginx 服务;

  从内核优化到源码解读的全方位拆解;

  OpenResty + Nginx 开发实战。

陶辉Nginx核心知识100讲

《Nginx核心知识100讲》课程大纲

  一、初识Nginx

  课程综述

  Nginx适用于哪些场景?

  Nginx出现的历史背景

  为什么用Nginx:它的5个主要优点

  Nginx的四个主要组成部分

  Nginx的版本发布历史

  选择哪一个Nginx发行版本?

  编译出适合自己的Nginx

  Nginx配置文件的通用语法介绍

  Nginx命令行及演示:重载、热部署、日志切割

  用Nginx搭建一个可用的静态资源Web 服务器

  用Nginx搭建一个具备缓存功能的反向代理服务

  用GoAccess 实现可视化并实时监控access日志

  从网络原理来看SSL安全协议

  对称加密与非对称加密各自的应用场景

  SSL证书的公信力是如何保证的?

  SSL 协议握手时Nginx的性能瓶颈在哪里?

  用免费SSL证书实现一个HTTPS站点

  基于OpenResty用Lua语言实现简单服务

  二、Nginx架构基础

  Nginx的请求处理流程

  Nginx的进程结构

  Nginx的进程结构实例演示

  使用信号管理Nginx的父子进程

  reload 重载配置文件的真相

  热升级的完整流程

  优雅地关闭worker 进程

  网络收发与Nginx事件间的对应关系

  Nginx网络事件实例演示

  Nginx的事件驱动模型

  epoll的优劣及原理

  Nginx的请求切换

  同步&异步、阻塞&非阻塞之间的区别

  Nginx的模块究竟是什么?

  Nginx模块的分类

  Nginx如何通过连接池处理网络请求

  内存池对性能的影响

  所有worker进程协同工作的关键:共享内存

  用好共享内存的工具:Slab 管理器

  哈希表的max_size与bucket_size如何配置

  Nginx中最常用的容器:红黑树

  使用动态模块来提升运维效率

  三、详解HTTP模块

  第三章内容介绍

  冲突的配置指令以谁为准?

  Listen 指令的用法

  处理HTTP请求头部的流程

  Nginx中的正则表达式

  如何找到处理请求的server指令块

  详解HTTP请求的11个阶段

  11个阶段的顺序处理

  postread 阶段:获取真实客户端地址的realip模块

  rewrite 阶段的rewrite模块:return指令

  rewrite阶段的rewrite模块:重写URL

  rewrite阶段的rewrite模块:条件判断

  find_config 阶段:找到处理请求的location指令块

  preaccess阶段:对连接做限制的limit_conn模块

  preaccess阶段:对请求做限制的limit_req模块

  access阶段:对ip做限制的access模块

  access阶段:对用户名密码做限制的anth_basic模块

  access阶段:使用第三方做权限控制的auth_request模块

  access阶段的satisfy 指令

  precontent 阶段:按序访问资源的try_files模块

  实时拷贝流量:precontent阶段的mirror模块

  content阶段:详解 root和alias 指令

  static 模块提供的3个变量

  static模块对url不以斜杠结尾却访问目录的做法

  index和antoindex模块的用法

  提升多个小文件性能的concat模块

  access日志的详细用法

  HTTP过滤模块的调用流程

  用过滤模块更改响应中的字符串:sub模块

  用过滤模块在http响应的前后添加内容:addition模块

  Nginx变量的运行原理

  HTTP框架提供的请求相关的变量

  HTTP框架提供的其它变量

  使用变量防盗链的 referer模块

  使用变量实现防盗链功能实践:secure_link模块

  为复杂的业务生成新的变量:map模块

  通过变量指定少量用户实现A/B测试:split_client模块

  根据IP地址范围的匹配生成新变量:geo模块

  使用变量获得用户的地理位置:geoip模块

  对客户端使用keepalive提升连接效率

  四、反向代理与负载均衡

  反向代理与负载均衡原理

  负载均衡策略:round-robin

  负载均衡哈希算法:ip_hash与hash模块

  一致性哈希算法:hash模块

  最少连接算法以及如何跨worker 进程生效

  http upstream模块提供的变量

  http反向代理proxy处理请求的流程

  proxy 模块中的proxy_pass 指令

  根据指令修改发往上游的请求

  接受用户请求包体的方式

  与上游服务建立连接

  接受上游的响应

  处理上游的响应头部

  上游出现失败时的容错方案

  对上游使用SSL连接

  用好浏览器的缓存

  Nginx 决策浏览器过期缓存是否有效

  缓存的基本用法

  对客户端请求的缓存处理流程

  接收上游响应的缓存处理流程

  如何减轻缓存失败时上游服务的压力

  及时清理缓存

  uwsgi、fastcgi、scgi指令的对照表

  memcached反向代理的用法

  搭建 websocket反向代理

  用分片提升缓存效率

  open file cache 提升系统性能

  http2协议介绍

  搭建http2服务并推送资源

  9RPC反向代理

  stream四层反向代理的7个阶段及常用变量

  proxy protocol 协议与relip模块

  限并发连接、限IP、记日志

  stream 四层反向代理SSL下游流量

  stream_preread模块取出SSL关键信息

  stream proxy 四层反向代理的用法

  UDP反向代理

  透传IP地址的3个方案

  五、Nginx的系统层性能优化

  性能优化方法论

  如何高效使用CPU

  多核间的负载均衡

  控制TCP三次握手参数

  建立TCP连接的优化

  滑动窗口与缓冲区

  优化缓存区与传输效率

  慢启动与拥塞窗口

  TCP协议的keepalive功能

  减少关闭连接时的time_wait 数量

  lingering_close延迟关闭TCP连接

  应用层协议的优化

  磁盘I0的优化

  减少磁盘读写次数

  零拷贝与gzip_static模块

  用tcmalloc优化内存分配

  使用Google PerfTools分析Nginx

  使用sub_status模块监控Nginx的状态

  六、从源码视角深入使用Nginx与OpenResty

  第三方模块源码的阅读

  Nginx的启动流程

  HTTP第三方模块的初始化

  if 指令是邪恶的吗?

  解读Nginx的核心转储文件

  通过debug 日志定位问题

  OpenResty 概述

  OpenResty中的Nginx模块与Lua模块

  如何在Nginx中嵌入Lua代码

  OpenResty中Lua与C代码交互的原理

  获取、修改请求与响应的SDK

  工具类型的SDK

  同步且非阻塞的底层SDK:cosocket

  基于协程的并发编程SDK

  定时器及时间相关的SDK

  share.DICT基于共享内存的字典

  子请求的使用方法

  基于OpenResty的WAF防火墙



 

Tags: 电脑编程入门自学 

立即下载( 密码:853r)

自学教程评论

站点信息

  • 建站时间:2017年01月12日
  • 源码总数:33
  • 运行天数:1379
  • 标签管理标签云
  • 最后更新:2020年10月21日
  • 网站地图XML网站地图