欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Nginx 模块自主开发一:开发前的了解

程序员文章站 2024-01-14 11:05:52
...

个人觉得要真正理解源码,如果 只停留在理论是远远不够,所以从现在起,要开始学习自己开发Nginx模块,再反过来理解Nginx本身代码。

Nginx 发送文件或转发 请求到其他服务器,有处理模块处理,但需要压缩或在服务端添加一些东西时,可以采用过滤模块,还是有一些核心模块主要负责管理网络层和应用层的 协议。如果处理模块把请求反向代理到后端的服务器,就变成另外一类的模块:负载均衡模块。负载均衡模块的配置中有一组后端服务器,当一个HTTP请求过来时,它决定哪台服务器应当获得这个请求。Nginx的负载均衡模块默认采用两种方法:轮转法,它处理请求的方式就像纸牌游戏一样从头到尾分发;IP哈希法,在众多请求的情况下,它确保来自同一个IP的请求会分发到相同的后端服务器。


每个过滤模块不会等上一个过滤模块全部完成;它能把前一个过滤模块的输出作为其处理内容;有点像 Unix 中的流水线。
过滤模块能以 buffer(缓冲区)为单位进行操作,这些 buffer 一般都是一页(4K)大小,当然你也可以在 nginx.conf 文件中进行配置。这意味着,比如模块可以压缩来自后端服务器的回复,然后像流一样的到达客户端,直到整个回复发送完成。


函数可在以下时段执行某些功能:
? 当服务读配置文件之前
? 读存在 location 和 server 或其他任何部分的每一个配置指令
? 当 Nginx 初始化全局部分的配置时
? 当 Nginx 初始化主机部分(比如主机/端口)的配置时
? 当 Nginx 将全局部分的配置与主机部分的配置合并的时候
? 当 Nginx 初始化位置部分配置的时候
? 当 Nginx 将其上层主机配置与位置部分配置合并的时候
? 当 Nginx 的主(master)进程开始的时候
? 当一个新的工作进程(worker)开始的时候
? 当一个工作进程退出的时候
? 当主进程退出的时候
? 处理请求
? 过滤回复的头部
? 过滤回复的主体
? 选择一台后端服务器
? 初始化到后端服务器的请求
? 重新初始化到后端的服务器的请求
? 处理来自后端服务器的回复
? 完成与后端服务器的交互

小结

以上内容是参考Emiller 的 Nginx 模块开发指南,我觉得现在很多 网上已经偏离 了开源的精神,把一些资源变相用积分之类获得,所以 个人决定要贡献 一份力量 ,我会将自己看到的好资料都免费开放给大家下载。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 Nginx 模块自主开发一:开发前的了解,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。