exec

Директива `exec` в модуле NGINX RTMP позволяет выполнять внешние команды или скрипты при наступлении определённых событий потоковой передачи.

Синтаксис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 следует учитывать авторизацию пользователей и аспекты безопасности, чтобы предотвратить потенциальные уязвимости.

← Ко всем директивам