下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 41 | 使用动态模块来提升运维效率
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Nginx核心知识100讲

共155讲 · 155课时,约1300分钟
18537
免费
01 | 课程综述
免费
02 | Nginx适用于哪些场景?
免费
03 | Nginx出现的历史背景
免费
04 | 为什么用Nginx:它的 5 ...
免费
05 | Nginx的四个主要组成部分
06 | Nginx的版本发布历史
07 | 选择哪一个Nginx发行版本...
08 | 编译出适合自己的Nginx
09 | Nginx配置文件的通用语法...
10 | Nginx命令行及演示:重载...
11 | 用Nginx搭建一个可用的静...
12 | 用Nginx搭建一个具备缓存...
13 | 用GoAccess实现可视化并实...
14 | 从网络原理来看SSL安全协...
15 | 对称加密与非对称加密各自...
16 | SSL证书的公信力是如何保...
17 | SSL协议握手时Nginx的性能...
18 | 用免费SSL证书实现一个HTT...
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与bucke...
40 | Nginx中最常用的容器:红...
41 | 使用动态模块来提升运维效...
免费
42 | 第三章内容介绍
43 | 冲突的配置指令以谁为准?
44 | Listen指令的用法
免费
45 | 处理HTTP请求头部的流程
46 | Nginx中的正则表达式
47 | 如何找到处理请求的server...
48 | 详解HTTP请求的11个阶段
49 | 11个阶段的顺序处理
50 | postread阶段:获取真实客...
51 | rewrite阶段的rewrite模块...
52 | rewrite阶段的rewrite模块...
53 | rewrite阶段的rewrite模块...
54 | find_config阶段:找到处...
55 | preaccess阶段:对连接做...
56 | preaccess阶段:对请求做...
57 | access阶段:对ip做限制的...
58 | access阶段:对用户名密码...
59 | access阶段:使用第三方做...
60 | access阶段的satisfy指令
61 | precontent阶段:按序访问...
62 | 实时拷贝流量:precontent...
63 | content阶段:详解root和a...
64 | static模块提供的3个变量
65 | static模块对url不以斜杠...
66 | index和autoindex模块的用...
67 | 提升多个小文件性能的conc...
68 | access日志的详细用法
69 | HTTP过滤模块的调用流程
70 | 用过滤模块更改响应中的字...
71 | 用过滤模块在http响应的前...
72 | Nginx变量的运行原理
73 | HTTP框架提供的请求相关的...
74 | HTTP框架提供的其他变量
75 | 使用变量防盗链的referer...
76 | 使用变量实现防盗链功能实...
77 | 为复杂的业务生成新的变量...
78 | 通过变量指定少量用户实现...
79 | 根据IP地址范围的匹配生成...
80 | 使用变量获得用户的地理位...
81 | 对客户端使用keepalive提...
82 | 反向代理与负载均衡原理
83 | 负载均衡策略:round-rob...
84 | 负载均衡哈希算法:ip_has...
85 | 一致性哈希算法:hash模块
86 | 最少连接算法以及如何跨wo...
87 | upstream模块提供的变量
88 | proxy模块处理请求的流程
89 | proxy模块中的proxy_pas...
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协议与r...
114 | 限并发连接、限IP、记日...
115 | stream四层反向代理处理S...
116 | stream_preread模块取出S...
117 | stream proxy四层反向...
118 | UDP反向代理
119 | 透传IP地址的3个方案
120 | 性能优化方法论
121 | 如何高效使用CPU
122 | 多核间的负载均衡
免费
123 | 控制TCP三次握手参数
免费
124 | 建立TCP连接的优化
125 | 滑动窗口与缓冲区
126 | 优化缓冲区与传输效率
127 | 慢启动与拥塞窗口
128 | TCP协议的keepalive功能
129 | 减少关闭连接时的time_wa...
130 | lingering_close延迟关闭...
131 | 应用层协议的优化
免费
132 | 磁盘IO的优化
133 | 减少磁盘读写次数
134 | 零拷贝与gzip_static模...
135 | 用tcmalloc优化内存分配
136 | 使用Google PerfTools分...
137 | 使用stub_status模块监控...
138 | 第三方模块源码的阅读
139 | Nginx的启动流程
140 | HTTP第三方模块的初始化
141 | if指令是邪恶的吗?
142 | 解读Nginx的核心转储文件
143 | 通过debug日志定位问题
144 | OpenResty概述
145 | OpenResty中的Nginx模块...
146 | 如何在Nginx中嵌入Lua代...
147 | OpenResty中Lua与C代码...
148 | 获取、修改请求与响应的S...
149 | 工具类型的SDK
150 | 同步且非阻塞的底层SDK:...
151 | 基于协程的并发编程SDK
152 | 定时器及时间相关的SDK
153 | share.DICT基于共享内存...
154 | 子请求的使用方法
155 | 基于OpenResty的WAF防火...

精选留言(26)

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

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

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

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

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

    作者回复: 整个nginx的

    2
  • 2019-04-01
    动态库从哪里获取?

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

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

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

    1
  • 添加动态库后,直接-s reload 不需要热更新吗 毕竟nginx执行文件也更改了

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

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

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

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

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

  • 2019-01-19
    [root@robert nginx]# nginx
    nginx: [emerg] dlopen() "/usr/local/nginx//moduels/ngx_http_image_filter_module.so" failed (/usr/local/nginx//moduels/ngx_http_image_filter_module.so: cannot open shared object file: No such file or directory) in /usr/local/nginx//conf/nginx.conf:1
    老师我的nginx重新编译后,不知道为什么在找路径时会自动多出"//"
    展开

    作者回复: 查看下以下2处:
    1、load_module 指令后的配置是什么?nginx -V中看下--prefix指定的目录是什么?
    2、尝试nginx启动时,用-p强制指定prefix目录,验证下。
    另外,两个//不影响访问,是不是那个so文件不存在?

  • 2018-12-16
    老师 动态模块有性能损失吗? 跟直接编译进去对比

    作者回复: 没有性能损失。

  • 2018-12-07
    nginx unit能在后文做些介绍吗

    作者回复: nginx unit是个非常大的话题,这门课程内容有限,不会涉及它哦

  • 2018-12-04
    老师,针对浏览器的options 请求,nginx 能做什么嘛?

    作者回复: 不太明白这个问题

  • 2018-12-04
    老师,一个upstream中有多台机器标识了backup会怎么样?主要的机器挂了,是从中随机选择一台吗?若那台backup也不好呢?

    作者回复: 如果upstream策略定义的主策略失效后,都会退化为带权重的RoundRobin算法。第4部分课程会讲到。

  • 2018-12-04
    老师,可以多介绍些配置方面的内容吗?比如一些常用的指令及配置,可以结合原理一起讲

    作者回复: 第3、4部分内容都是在讲指令,而且是结合着原理来讲的。第2部分是基础,所以指令讲得少。

  • 2018-11-26
    http2模块会讲解吗?

    作者回复: 第4部分会讲到

  • 2018-11-25
    请问一下旧的APP使用http post方法访问nginx服务,现在我们想后台只用https提供服务,但是重定向不支持post方法,请问有办法解决吗?谢谢

    作者回复: 如果你原来是用302,那么可以考虑307重定向,它不允许改变方法。第3部分关于return指令的课程,会介绍301、302、303、307、308重定向间的区别

  • 2018-11-25
    催更催更啊,老师的课程很好,让我对nginx有了更深入的了解,我是电商行业,高并发、缓存、高可用需要深度研究,这课程正好适合我😊

    作者回复: 很高兴对你有帮助!

  • 2018-11-25
    http_geoip_module 这个动态库能获取到每个城市的IP吗 如果想知道访问的IP是来这哪里有没有好的解决方案,谢谢老师

    作者回复: 有的,第3部分倒数第3课就在介绍geoip模块以及maxmind数据库的用法。

  • 老师,我们生产环境用的 1.12.2版本 nginx,正向、反向都在用,并且一个nginx同时使用了正向和反向代理,但是陆陆续续总是出问题,一般都是先外网连接超时,然后便是解析外网超时。也没找到相关资料,所以想让老师解答下,nginx正向https代理稳定吗?可以用于生产环境吗?如果不能用于生产环境,还有其他替代方案吗?

    作者回复: nginx可以用于正向代理生产环境。解析超时,需要你确认是哪一部超时了,第4部分课程会分解请求处理的完整流程,你可以基于这个流程分析哪一步超时了。

  • 老师,请问您个问题,现在我们生产环境用了nginx正向https代理,同时也用了反向代理,但是正向代理陆陆续续总有问题,用户量多一点(并发少于100)的时候就会发生连接超时,后边就出现解析地址超时的现象,网上没有找到相关的资料,想问下老师nginx正向代理可以用于生产环境吗?有没有替代方案?

    作者回复: nginx用于正向代理一样很稳定。具体看下超时原因吧。