Nginx中的模块分类
发布时间:2023-06-02 13:42:00 所属栏目:教程 来源:
导读:关于 Nginx 模块的分类有很多种方式,目前网上博客中写的较多的是按照功能进行分类,有如下几大类:
event 模块: 搭建 独立于操作系统的事件处理机制的框架,以及 提供各种具体事件的处理。代表性的模块有:ngx_eve
event 模块: 搭建 独立于操作系统的事件处理机制的框架,以及 提供各种具体事件的处理。代表性的模块有:ngx_eve
关于 Nginx 模块的分类有很多种方式,目前网上博客中写的较多的是按照功能进行分类,有如下几大类: event 模块: 搭建 独立于操作系统的事件处理机制的框架,以及 提供各种具体事件的处理。代表性的模块有:ngx_events_module, ngx_event_core_module, ngx_epoll_module; handler 模块: 主要负责处理客户端请求并产生待响应的内容,比如 ngx_http_static_module 模块,负责客户端的静态页面请求处理并将对应的磁盘 文件准备为响应内容输出; filter 模块: 主要 负责处理输出的内容,包括修改输出内容。代表性的模块有: ngx_http_sub_module; upstream 模块: 该类模块都是用于实现反向代理功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回给客户端。比如前面介绍到转发 http、websocket、grpc、rtmp等协议的模块都可以划分为这一类; 负载均衡模块: 负载均衡的模块,实现相应算法。这类模块都是用于实现 Nginx 的负载均衡功能。 extend 模块: 又称第三方模块,非 Nginx 官方提供,由各大企业的开发人员结合自身业务开发而成。Nginx 提供了非常好的模块编写机制,遵循相关的标准可以很快定制出符合我们业务场景的模块,而且内部调用 Nginx 内部提供的方法进行处理,使得第三方模块往往都具备很好的性能。 对于官方提供的模块,我们可以直接在官网文档上学习,学习的方式和学习其他互联网组件的方式一致,首先学习如何使用,在用至熟练后可以深入分析其源码了解功能实现背后的原理。 我们以前面介绍到的 Nginx 的限速模块(limit_req模块)进行说明。首先是掌握该模块的用法,在该模块的官方地址中,有关于该模块的详细介绍,包括该模块提供的所有指令以及所有变量说明。此外,还有比较丰富的指令用例。在多次使用该指令并自认为掌握了该模块的用法之后,想了解限速背后的原理以及相关算法时,就可以深入到源码学习了。 进入 Nginx 的源码目录,使用ls查看源码文件,限速模块是在 http 目录中的。 [root@server Nginx-1.17.6]# cd src/ [root@server src]# ls core event http mail misc os stream [root@server src]# ls http/modules/ngx_http_limit_*.c http/modules/ngx_http_limit_conn_module.c http/modules/ngx_http_limit_req_module.c 找到 Nginx 模块对应的代码文件后,我们就可以阅读里面的代码进行学习。往往源码的阅读是枯燥无味的,我们可以借助海量的网络资源辅助我们学习。作者深入分析了 Nginx 的限流模块的源码以及相应限流算法,最后进行了相关的实验测试。通过这样一个个模块深入学习,最后在使用每一个 Nginx 指令时,也会非常熟练,最后成为 Nginx 高手。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |