exec_push
Директива exec_push в модуле NGINX RTMP позволяет выполнять внешние команды в ответ на определённые события потока.
Описание
Директива exec_push предназначена для запуска внешних программ или команд всякий раз, когда происходят определённые события, связанные с потоком, такие как публикация (запуск прямой трансляции) или закрытие потока. Это особенно полезно для интеграции дополнительных функций, таких как транскодирование, мониторинг или ведение логов, поскольку позволяет автоматизировать задачи без ручного вмешательства.
Особенностью этой директивы является то, что она принимает один или несколько аргументов, которые представляют собой команды для выполнения. Ожидаемый формат обычно включает команду, за которой следуют её параметры. Возможность указания нескольких команд позволяет пользователям создавать сложные рабочие процессы в зависимости от требований их приложения. Каждый раз при возникновении соответствующего события потока указанные команды будут выполняться в контексте процесса NGINX, что обеспечивает немедленную обработку.
Тем не менее при внедрении exec_push пользователям следует проявлять осторожность в отношении выполняемых команд, поскольку некорректная конфигурация может привести к уязвимостям безопасности или проблемам с производительностью. Например, долго выполняющиеся процессы могут блокировать рабочие процессы NGINX, что может повлиять на производительность потоковой передачи.
Пример конфига
application live {
live on;
exec_push /path/to/script.sh arg1 arg2;
}Убедитесь, что выполнение внешней команды тщательно контролируется, чтобы избежать рисков безопасности.
Избегайте длительных процессов в exec_push, так как они могут блокировать worker processes и ухудшать общую производительность.
Проверяйте вывод внешних команд, чтобы корректно обрабатывать возможные ошибки.