Nginx 核心知识 150 讲
陶辉
智链达 CTO,前阿里云 P8 高级技术专家
61678 人已学习
新⼈⾸单¥98
课程目录
已完结/共 155 讲
第三章:详解HTTP模块 (40讲)
第四章:反向代理与负载均衡 (38讲)
Nginx 核心知识 150 讲
登录|注册
留言
35
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 41 | 使用动态模块来提升运维效率
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
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语言实现简单服务
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模块:重写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提升连接效率
82 | 反向代理与负载均衡原理
83 | 负载均衡策略:round-robin
84 | 负载均衡哈希算法: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 | 如何高效使用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的状态
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防火墙&结课测试
本节摘要
登录 后留言

全部留言(35)

  • 最新
  • 精选
我来也
今天只看了视频。有个关于动态库的疑问请教下: 使用so动态库,没问题,如果真想热更新动态库怎么可以做到? 以前在这方面踩过坑,正在被其他进程引用到的so文件,即使touch一下,别说重新拷贝/生成一个,都可能会导致应用的进程挂掉。 但是把这个so重名了/删除后再生存一个,之前正在引用的进程不会挂掉,但是即使在进程内部想办法重新加载该so,实际上还是加载到旧的,而不是新的。只有换个名字/重启进程才能引用新的。 刚才看视频中,注意到了个细节,就是旧的so被重命名为了so.old,应该就是避免进程挂掉。 另外nginx的reload是通过重新启动worker工作线程的方式,来使新编译的so文件生效的。 像我现在的项目中,主进程又不像nginx可以动态开worker线程,想动态更新so只有重启/重命名so,进程中加载新的so名。 题外话: 之前看到老师用screen,感觉很方便。前段时间我就把tmux的功能系统的看了下,以前只会最最基本的单窗口单标签,现在稍微强点了,感觉真是方便啊。配合mosh,几十个终端再也不怕断网和电脑重启了。 还是受老师的启发,哈哈!

作者回复: 谢谢分享!nginx使用动态库时可以指定动态库的位置,避免被其他进程复用共享。

2018-12-02
5
心灵捕手
老师,nginx编译安装动态模块时生成的mudules/目录,必须是在make install才有的么?如果之前安装的nginx能否通过替换编译的nginx二进制文件来安装动态模块?

作者回复: 可以,但热升级前,我们需要手动建立modules目录放置动态库,并在nginx.conf在配置好目录。

2019-01-02
4
Q
老师咨询个问题,nginx模块中 有没有防御 网站盗链 网站爬虫的 配置在nginx中 效果如何?

作者回复: 有的,第三部分75课的referer和76课中的secure_link,配合50课的realip模块。 更复杂的防盗链,可以使用openresty中的waf模块。

2018-12-20
2
napolenAx
老师咨询个nginx监控的问题,在使用stub_status模块的时候,配置文件中每个server内都要添加单独的location /ngx_status{stub_status on;}这样的字段吗?还是说只在一个server段内添加就可以对整个nginx进行监控,例如Active connections这个指标代表的是整个nginx的活动连接数,还是配置的那个server的活动连接数?

作者回复: 整个nginx的

2018-11-29
2
mickey
问题:安装http_image_filter_module是nginx提供的集成图片处理模块,需要gd-devel的支持 解决方案: yum -y install gd-devel

作者回复: 谢谢mickey分享

2021-04-28
1
Hana
动态库从哪里获取?

作者回复: 有些模块支持动态库,在configure --help中可以看到,例如:--with-http_geoip_module=dynamic,这样编译后就会生成.so动态库

2019-04-01
1
Frank
./configure --help |grep dynamic --with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module --with-http_image_filter_module=dynamic enable dynamic ngx_http_image_filter_module --with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module --with-http_perl_module=dynamic enable dynamic ngx_http_perl_module --with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module --with-stream=dynamic enable dynamic TCP/UDP proxy module --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module --add-dynamic-module=PATH enable dynamic external module --with-compat dynamic modules compatibility ======================================================================= 动态模块只有这么多,能加第三方模块为动态模块吗?

作者回复: 提供动态模块的第三方模块都可以。

2020-03-23
想当上帝的司机
添加动态库后,直接-s reload 不需要热更新吗 毕竟nginx执行文件也更改了

作者回复: 更新动态库,nginx文件可以不变

2019-07-21
马里奥的马里奥
老师你好,make之后,并没有在目录生成modules文件夹,这个文件夹是不是需要手动创建,然后按照您的意思是,在nginx的根目录,进行配置为modules,然后make的时候回在目标文件夹中复制需要的module,是这样吗?

作者回复: modules只是例子中的目录,实际你建任何名字的目录都可以的,只要路径能找到so动态库文件即可

2019-02-22
Q
老师 请问openresty 用在生产环境稳定吗? 如果用waf 功能 那这台服务器既做web又做waf防火墙 是不是很影响web性能? 再请问原生开源nginx有没有waf功能?

作者回复: 稳定的,特别是基于cosocket的lua模块,它们久经考验而且持续维护中。 waf防火墙中,对性能的消耗是有的,主要是对许多规则做正则表达式匹配后才能放行请求。开源nginx没有waf功能。

2019-02-03
收起评论