exec
NGINX RTMP 模块中的 `exec` 指令允许在发生某些流媒体事件时执行外部命令或脚本。
NGINX RTMP module
语法exec command [arg1 ...];
默认值none
上下文
参数1+
说明
exec 指令旨在促进将外部进程集成到 RTMP 事件生命周期中,使 NGINX 能够根据流媒体活动执行命令。例如,该命令可以在像 publish、play 和 drop 这样的事件触发时运行,允许用户通过自定义行为(例如日志记录、通知,或通过外部脚本进行更复杂的处理)来介入流媒体工作流程。此指令的语法涉及指定一个或多个命令字符串,在指定事件触发时将运行这些字符串。
exec 指令的参数由一个命令字符串组成,且可以包含指定如何执行外部进程的参数。该指令通过允许与其他软件组件进行动态交互来增强灵活性,并且可以通过运行处理附加任务(例如比特率调整或基于内容条件的流分析)的脚本来改善流管理。必须处理已执行命令的输出和潜在错误,因为 NGINX 不会直接管理这些进程,这需要对外部脚本进行适当的监控和调试。
鉴于其功能,exec 指令应谨慎使用,因为不正确的实现可能导致安全漏洞或在所执行的命令资源密集时带来性能损失。此外,还需确保可执行文件或脚本的路径相对于 NGINX 用户上下文正确定义。
配置示例
application live {
live on;
exec /path/to/script.sh;
}⚠
确保外部命令具有正确的执行权限。
⚠
必须对命令进行彻底测试,以避免在流式传输期间造成性能问题。
⚠
应在外部脚本中实现输出和错误处理,因为 NGINX 不会缓冲或管理错误。在使用 exec 指令时,应考虑用户授权和安全性影响,以防止潜在的安全漏洞。