exec_push
NGINX RTMP 模块中的 exec_push 指令允许在某些流事件发生时执行外部命令。
NGINX RTMP module
语法exec_push command [args];
默认值none
上下文
参数1+
说明
exec_push 指令用于在与流相关的特定事件发生时触发外部程序或命令,例如发布(开始直播)或关闭流。这在集成附加功能时尤其有用,例如转码、监控或日志记录,因为它可以在不需要人工干预的情况下自动执行任务。
该指令的一个独特之处在于它可以接受一个或多个参数,这些参数表示要执行的命令。通常的格式包括命令及其参数。指定多个命令的灵活性允许用户根据应用的需求创建复杂的工作流。每当相关的流事件发生时,指定的命令将以 NGINX 进程的上下文执行,从而实现即时处理。
但是,在实现 exec_push 时,用户必须对运行的命令保持谨慎,因为配置不当可能导致安全漏洞或性能问题。例如,长时间运行的进程可能会阻塞 NGINX 的工作进程,从而影响流媒体性能。
配置示例
application live {
live on;
exec_push /path/to/script.sh arg1 arg2;
}⚠
确保对外部命令进行严格控制,以避免安全风险。
⚠
避免在 exec_push 中运行长时间运行的进程,因为它们可能会阻塞 worker 进程,从而影响整体性能。
⚠
验证外部命令的输出,以便妥善处理任何错误。