Nginx 动态编译加载第三方流媒体服务模块:Ngin
时间:2026-09-24 14:53 来源:未知 人气:
简介
Nginx 1.9.11开始增加加载动态模块支持,可以在不停机的情况下加载和卸载模块。从此不再需要替换nginx文件即可增加第三方扩展。目前官方只有几个模块支持动态加载,第三方模块需要升级支持才可编译成模块。
通过帮助命令./configure --help | grep dynamic查看是否支持动态加载模块
~/build/openresty-1.19.3.1$ ./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
如上可看出官方支持9个动态模块编译,需要增加第三方模块,使用参数--add-dynamic-module=即可。
动态模块概述
- 可以加载到NGINX中的模块是用C编写的
- 获取匹配的NGINX开源版本
- 获取模块源,并在必要时更改模块的配置文件
- 使用configure命令的--add-dynamic-module参数针对NGINX开源版本构建动态模块
- 将生成的动态模块(.so文件)加载到NGINX中(modules目录下),并像使用内置模块一样使用它
动态模块语法
- 命令:load_module
- Default:—
- 上下文配置段: main
- 说明:版本必须=1.9.11
- 实例:load_module modules/ngx_mail_module.so;
编译动态模块
这里安装基于Nginx的流媒体服务器:nginx-rtmp-module 模块
项目地址:https://github.com/arut/nginx-rtmp-module
下载 OpenResty
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
// 下载
wget https://openresty.org/download/openresty-1.19.3.1.tar.gz
// 解压
tar -zxvf openresty-1.19.3.1.tar.gz