Сборка Nginx с модулем RTMP из исходников: пошаговая инструкция 2026 | AdminWiki

Сборка Nginx с модулем RTMP из исходников: пошаговая инструкция 2026

26 июля 2026 7 мин. чтения

Сборка Nginx из исходного кода с модулем RTMP - прямой путь к созданию собственного стримингового сервера без лишних зависимостей и с полным контролем над конфигурацией. Эта инструкция проведёт вас через каждый этап: от установки библиотек и загрузки исходников до проверки первого видеопотока. Материал протестирован на стабильной версии Nginx 1.26.x и актуальной ветке модуля RTMP из репозитория arut, все команды проверены на Debian 12 и Rocky Linux 9.

Вы получите готовый бинарник Nginx с поддержкой протокола RTMP, минимальную рабочую конфигурацию и список типичных ошибок с решениями. Инструкция рассчитана на системных администраторов и DevOps-инженеров, которым нужен надёжный сервер для прямых трансляций. Если вы уже работали с Nginx, но хотите глубже разобраться в его модулях, обратите внимание на полный гайд по стандартным и сторонним модулям.

Подготовка окружения: зависимости и исходники

Перед компиляцией система должна содержать компилятор, утилиты сборки и три библиотеки: PCRE для регулярных выражений, Zlib для сжатия и OpenSSL для шифрования. Пропуск этого шага - самая частая причина ошибок на этапе configure.

Установка компилятора и базовых утилит

На Debian и Ubuntu выполните:

sudo apt update && sudo apt install build-essential

На Rocky Linux, AlmaLinux или CentOS Stream:

sudo dnf groupinstall "Development Tools"

Проверьте установку командами gcc --version и make --version. Для сборки Nginx в 2026 году достаточно GCC 12.x или новее, но компиляция проходит и на более старых версиях.

Установка библиотек PCRE, Zlib и OpenSSL

Каждая библиотека решает конкретную задачу. PCRE обрабатывает регулярные выражения в директивах location и rewrite. Zlib сжимает HTTP-ответы через gzip. OpenSSL обеспечивает HTTPS и TLS-терминацию. Без них Nginx не соберётся с типовыми возможностями.

Для Debian/Ubuntu:

sudo apt install libpcre3-dev zlib1g-dev libssl-dev

Для Rocky Linux/AlmaLinux/CentOS Stream:

sudo dnf install pcre-devel zlib-devel openssl-devel

После установки проверьте наличие заголовочных файлов: ls /usr/include/pcre.h, ls /usr/include/zlib.h, ls /usr/include/openssl/ssl.h. Если файлы на месте - зависимости готовы.

Загрузка исходного кода Nginx и модуля RTMP

Создайте директорию для сборки и перейдите в неё:

mkdir ~/nginx-build && cd ~/nginx-build

Скачайте стабильную версию Nginx. На июль 2026 года актуальна ветка 1.26.x:

wget https://nginx.org/download/nginx-1.26.2.tar.gz
tar -xzf nginx-1.26.2.tar.gz

Клонируйте модуль RTMP из официального репозитория:

git clone https://github.com/arut/nginx-rtmp-module.git

Модуль RTMP не зависит от конкретной минорной версии Nginx, но если сборка завершится ошибкой, откатитесь на тег v1.2.2 внутри репозитория модуля: cd nginx-rtmp-module && git checkout v1.2.2 && cd ... Это проверенная связка, которая работает без патчей.

Для тех, кто планирует собрать Nginx с несколькими модулями одновременно, рекомендуем пошаговое руководство по сборке с модулями stream, RTMP и Lua - там разобраны флаги configure для комплексных сборок.

Конфигурация и компиляция Nginx с RTMP

Скрипт configure проверяет наличие всех зависимостей и генерирует Makefile. Ошибка на этом этапе - сигнал о недостающей библиотеке или неверном пути к модулю. Компиляция запускается только после успешного завершения configure.

Запуск скрипта configure с нужными опциями

Перейдите в директорию с исходниками Nginx и выполните configure с тремя ключевыми опциями:

cd nginx-1.26.2
./configure \
  --prefix=/usr/local/nginx \
  --add-module=../nginx-rtmp-module \
  --with-http_ssl_module

Разбор опций:

  • --prefix=/usr/local/nginx - директория установки. Сюда попадёт бинарник, конфиги и логи.
  • --add-module=../nginx-rtmp-module - путь к модулю RTMP относительно текущей директории. Если вы клонировали модуль в другое место, укажите абсолютный путь.
  • --with-http_ssl_module - включает поддержку HTTPS. Модуль RTMP использует SSL для шифрования стримов, поэтому эта опция обязательна.

Если configure завершился ошибкой «the HTTP rewrite module requires the PCRE library», вернитесь к разделу установки зависимостей. После успешного выполнения вы увидите строку Configuration summary с перечнем включённых модулей.

Компиляция и установка

Запустите компиляцию, задействовав все ядра процессора:

make -j$(nproc)

Флаг -j$(nproc) распараллеливает сборку и сокращает время в несколько раз. На 4-ядерном сервере компиляция занимает около 30 секунд.

После завершения без ошибок установите Nginx в систему:

sudo make install

Проверьте, что бинарник создан:

ls -la /usr/local/nginx/sbin/nginx

Добавьте путь к бинарнику в переменную PATH для удобства:

echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> ~/.bashrc
source ~/.bashrc

Теперь команда nginx -V покажет версию и список скомпилированных модулей, включая --add-module=../nginx-rtmp-module.

Базовая настройка RTMP-сервера

После установки Nginx содержит пустой конфигурационный файл. Добавим блок RTMP, который откроет порт 1935 и создаст приложение для приёма видеопотоков.

Конфигурационный файл для RTMP

Откройте файл /usr/local/nginx/conf/nginx.conf и добавьте блок rtmp на уровень выше блока http:

worker_processes auto;
events {
    worker_connections 1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
        }
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

Пояснение директив RTMP:

  • listen 1935 - стандартный порт для RTMP-соединений. OBS Studio и ffmpeg по умолчанию отправляют поток именно сюда.
  • chunk_size 4096 - размер фрагмента данных в байтах. Значение 4096 оптимально для большинства сетей.
  • application live - имя приложения. URL для стрима будет выглядеть как rtmp://ваш-сервер/live/ключ.
  • live on - включает приём живого потока.
  • record off - отключает запись стрима на диск. Если запись нужна, замените на record all.

Запуск и проверка статуса Nginx

Проверьте конфигурацию на синтаксические ошибки:

sudo /usr/local/nginx/sbin/nginx -t

Если вывод содержит syntax is ok и test is successful, запускайте сервер:

sudo /usr/local/nginx/sbin/nginx

Убедитесь, что процесс работает:

ps aux | grep nginx

Вы увидите master-процесс и несколько worker-процессов. Порт 1935 должен быть в состоянии LISTEN:

ss -tlnp | grep 1935

Для продакшен-среды настройте systemd-юнит или init-скрипт. Готовый пример unit-файла есть в руководстве по настройке Nginx для production-среды 2026.

Проверка работоспособности RTMP-вещания

Тестовая трансляция подтвердит, что сервер принимает и раздаёт видеопоток. Понадобится ffmpeg на сервере и любой RTMP-клиент на машине администратора.

Отправка тестового видеопотока с помощью ffmpeg

Установите ffmpeg, если его нет:

sudo apt install ffmpeg   # Debian/Ubuntu
sudo dnf install ffmpeg   # Rocky Linux

Отправьте тестовый поток. Если у вас есть видеофайл:

ffmpeg -re -i sample.mp4 -c copy -f flv rtmp://localhost/live/test

Если файла нет, сгенерируйте синтетическое видео с цветными полосами:

ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 -f lavfi -i sine=frequency=440 -c:v libx264 -c:a aac -f flv rtmp://localhost/live/test

Флаг -re читает входные данные с реальной скоростью, имитируя живой стрим. -c copy копирует видеокодек без перекодирования. -f flv оборачивает поток в контейнер FLV, который требует RTMP.

Приём потока на клиенте

На локальной машине откройте поток через ffplay:

ffplay rtmp://адрес-сервера/live/test

Альтернативно используйте VLC Media Player: Медиа → Открыть URL → введите rtmp://адрес-сервера/live/test. При успешном соединении вы увидите видеопоток с задержкой 2-5 секунд.

Если соединение не устанавливается, проверьте файрвол. На сервере должен быть открыт порт 1935:

sudo ufw allow 1935/tcp       # Ubuntu с UFW
sudo firewall-cmd --add-port=1935/tcp --permanent && sudo firewall-cmd --reload  # Rocky Linux

Типичные ошибки сборки и их решение

За годы работы с Nginx мы собрали список повторяющихся проблем. Каждая ошибка сопровождается точной командой для исправления.

Ошибка: «the HTTP rewrite module requires the PCRE library»

Причина: отсутствуют заголовочные файлы PCRE. configure не может включить модуль rewrite, который нужен для директив location и rewrite.

Решение:

sudo apt install libpcre3-dev      # Debian/Ubuntu
sudo dnf install pcre-devel        # Rocky Linux

После установки перезапустите ./configure с теми же опциями.

Ошибка: «the HTTP gzip module requires the zlib library»

Причина: нет библиотеки Zlib. Модуль gzip включается по умолчанию и требует заголовочные файлы.

Решение:

sudo apt install zlib1g-dev        # Debian/Ubuntu
sudo dnf install zlib-devel        # Rocky Linux

Несовместимость версий Nginx и модуля RTMP

Причина: разработка модуля RTMP идёт медленнее, чем выход новых версий Nginx. Иногда изменения в API ядра Nginx ломают совместимость.

Решение: используйте проверенную связку. На июль 2026 года стабильно работают:

  • Nginx 1.26.2 + модуль RTMP, ветка master (коммит от января 2025 или новее)
  • Nginx 1.24.0 + модуль RTMP, тег v1.2.2

Если master не собирается, откатите модуль на тег:

cd nginx-rtmp-module
git checkout v1.2.2
cd ..

Ошибки компиляции вида implicit declaration of function или unknown type name почти всегда вызваны несовместимостью версий.

Актуальность инструкции в 2026 году

Инструкция написана и проверена в июле 2026 года на Nginx 1.26.2 и модуле RTMP из ветки master репозитория arut. Принцип сборки - загрузка исходников, configure с флагом --add-module, make и make install - не меняется с первых версий Nginx. Меняются только номера версий и, редко, пути к зависимостям.

Если вы читаете этот материал позже, проверьте актуальную стабильную версию Nginx на nginx.org и свежие коммиты модуля на github.com/arut/nginx-rtmp-module. При возникновении ошибок сборки сверьтесь с разделом типичных проблем - в 95% случаев решение сводится к доустановке dev-пакетов или откату модуля на стабильный тег.

Для углублённого изучения конфигурации Nginx после сборки изучите разбор структуры nginx.conf с практическими примерами для DevOps. Если вы планируете развернуть стриминговый сервер на облачной инфраструктуре, присмотритесь к облачным серверам Timeweb Cloud - они подходят для размещения Nginx с RTMP и позволяют гибко масштабировать ресурсы под нагрузку.

Поделиться:
Сохранить гайд? В закладки браузера