Перейти к содержанию

srt: Модуль SRT для Nginx

Установка на Debian/Ubuntu

Эти документы относятся к APT пакету nginx-module-srt, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-srt

Warning

Этот модуль еще не опубликован как nginx-module-srt в APT репозиториях. Следите за новостями или напишите на support@getpagespeed.com, чтобы запросить его.


Haivision SRT (Secure Reliable Transfer) / TCP шлюз. Поддерживает как SRT к TCP, так и TCP к SRT, включая двунаправленный обмен данными.

Реализация использует libsrt для SRT связи. Код libsrt выполняется в дополнительном потоке, уведомления eventfd используются для общения с основным потоком nginx.

Конфигурация

Пример конфигурации

## SRT -> TCP прокси
srt {
    server {
        listen 4321;
        proxy_pass tcp://127.0.0.1:5678;
    }
}

## TCP -> SRT прокси
stream {
    server {
        listen 5432;
        srt_proxy_pass srt://127.0.0.1:4321;
    }
}

Основные директивы srt

srt

  • синтаксис: srt { ... }
  • по умолчанию: -
  • контекст: main

Обеспечивает контекст конфигурации файла, в котором указаны директивы srt server.

server

  • синтаксис: server { ... }
  • по умолчанию: -
  • контекст: srt

Устанавливает конфигурацию для сервера.

listen

  • синтаксис: listen address:port [backlog=number] [bind] [ipv6only=on|off] [reuseport];
  • по умолчанию: -
  • контекст: server

Устанавливает адрес и порт для UDP сокета, на котором сервер будет принимать соединения.

Смотрите документацию директивы listen модуля nginx stream для получения дополнительной информации о поддерживаемых параметрах.

variables_hash_max_size

  • синтаксис: variables_hash_max_size size;
  • по умолчанию: 1024
  • контекст: srt

Устанавливает максимальный размер хэш-таблицы переменных.

variables_hash_bucket_size

  • синтаксис: variables_hash_bucket_size size;
  • по умолчанию: 64
  • контекст: srt

Устанавливает размер ведра для хэш-таблицы переменных.

error_log

  • синтаксис: error_log file [level];
  • по умолчанию: logs/error.log error
  • контекст: srt, server

Конфигурирует ведение логов, смотрите документацию директивы error_log ядра nginx для получения дополнительной информации.

fc_pkts

  • синтаксис: fc_pkts number;
  • по умолчанию: 25600
  • контекст: srt, server

Устанавливает максимальное количество "в пути" пакетов (пакетов, которые были отправлены, но еще не подтверждены).

Смотрите документацию libsrt по опции SRTO_FC для получения дополнительной информации.

mss

  • синтаксис: mss size;
  • по умолчанию: 1500
  • контекст: srt, server

Максимальный размер сегмента в байтах.

Смотрите документацию libsrt по опции SRTO_MSS для получения дополнительной информации.

recv_buf

  • синтаксис: recv_buf size;
  • по умолчанию: 8192 buffers
  • контекст: srt, server

Размер буфера приема в байтах.

Смотрите документацию libsrt по опции SRTO_RCVBUF для получения дополнительной информации.

recv_udp_buf

  • синтаксис: recv_udp_buf size;
  • по умолчанию: 8192 buffers
  • контекст: srt, server

Размер буфера приема UDP сокета в байтах.

Смотрите документацию libsrt по опции SRTO_UDP_RCVBUF для получения дополнительной информации.

recv_latency

  • синтаксис: recv_latency size;
  • по умолчанию: 120ms
  • контекст: srt, server

Задержка на стороне приема в миллисекундах.

Смотрите документацию libsrt по опции SRTO_RCVLATENCY для получения дополнительной информации.

send_buf

  • синтаксис: send_buf size;
  • по умолчанию: 8192 buffers
  • контекст: srt, server

Размер буфера отправки в байтах.

Смотрите документацию libsrt по опции SRTO_SNDBUF для получения дополнительной информации.

send_udp_buf

  • синтаксис: send_udp_buf size;
  • по умолчанию: 65536
  • контекст: srt, server

Размер буфера отправки UDP сокета в байтах.

Смотрите документацию libsrt по опции SRTO_UDP_SNDBUF для получения дополнительной информации.

send_latency

  • синтаксис: send_latency size;
  • по умолчанию: 120ms
  • контекст: srt, server

Минимальная задержка приема, обеспечиваемая отправителем.

Смотрите документацию libsrt по опции SRTO_PEERLATENCY для получения дополнительной информации.

passphrase

  • синтаксис: passphrase expr;
  • по умолчанию: ``
  • контекст: srt, server

Устанавливает пароль для шифрования, смотрите документацию libsrt по опции SRTO_PASSPHRASE для получения дополнительной информации.

Значение параметра может содержать переменные.

in_buf_size

  • синтаксис: in_buf_size size;
  • по умолчанию: 64k
  • контекст: srt, server

Устанавливает размер буфера, используемого для чтения данных от клиента.

Директивы srt map

map

  • синтаксис: map string $variable { ... }
  • по умолчанию: ``
  • контекст: srt

Создает новую переменную, значение которой зависит от значений одной или нескольких исходных переменных, указанных в первом параметре.

Смотрите документацию директивы map модуля nginx stream для получения дополнительной информации.

map_hash_max_size

  • синтаксис: map_hash_max_size size;
  • по умолчанию: 2048
  • контекст: srt

Устанавливает максимальный размер хэш-таблицы переменных map.

map_hash_bucket_size

  • синтаксис: map_hash_bucket_size size;
  • по умолчанию: 32|64|128
  • контекст: srt

Устанавливает размер ведра для хэш-таблицы переменных map.

Директивы srt log

access_log

  • синтаксис: access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];
  • по умолчанию: off
  • контекст: srt, server

Устанавливает путь, формат и конфигурацию для записей в буферизованный лог.

Смотрите документацию директивы access_log модуля nginx stream для получения дополнительной информации.

log_format

  • синтаксис: log_format name [escape=default|json|none] string ...;
  • по умолчанию: ``
  • контекст: srt

Определяет формат лога.

Смотрите документацию директивы log_format модуля nginx stream для получения дополнительной информации.

open_log_file_cache

  • синтаксис: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  • по умолчанию: off
  • контекст: srt, server

Определяет кэш, который сохраняет дескрипторы файлов часто используемых логов, имена которых содержат переменные.

Смотрите документацию директивы open_log_file_cache модуля nginx stream для получения дополнительной информации.

Директивы прокси srt

proxy_pass

  • синтаксис: proxy_pass address;
  • по умолчанию: ``
  • контекст: srt, server

Устанавливает адрес проксируемого сервера.

proxy_connect_timeout

  • синтаксис: proxy_connect_timeout timeout;
  • по умолчанию: 60s
  • контекст: srt, server

Определяет таймаут для установления соединения с проксируемым сервером.

proxy_timeout

  • синтаксис: proxy_timeout timeout;
  • по умолчанию: 10m
  • контекст: srt, server

Устанавливает таймаут между двумя последовательными операциями чтения или записи на соединениях с клиентом или проксируемым сервером. Если данные не передаются в течение этого времени, соединение закрывается.

proxy_buffer_size

  • синтаксис: proxy_buffer_size size;
  • по умолчанию: 64k
  • контекст: srt, server

Устанавливает размер буфера, используемого для чтения данных с проксируемого сервера.

proxy_protocol

  • синтаксис: proxy_protocol on | off;
  • по умолчанию: off
  • контекст: srt, server

Включает протокол PROXY для соединений с проксируемым сервером.

proxy_header

  • синтаксис: proxy_header expr;
  • по умолчанию: ``
  • контекст: srt, server

Определяет строку, которая отправляется на проксируемый сервер перед любыми данными, полученными по SRT.

Значение параметра может содержать переменные.

Директивы set misc srt

set_decode_base64

  • синтаксис: set_decode_base64 $dst src;
  • по умолчанию: ``
  • контекст: srt

Выполняет декодирование base64 значения второго аргумента и присваивает результат переменной, указанной в первом аргументе.

set_decode_base64url

  • синтаксис: set_decode_base64url $dst src;
  • по умолчанию: ``
  • контекст: srt

Выполняет безопасное декодирование base64 URL значения второго аргумента и присваивает результат переменной, указанной в первом аргументе.

set_aes_decrypt

  • синтаксис: set_aes_decrypt $dst base64_key base64_iv src;
  • по умолчанию: ``
  • контекст: srt

Выполняет расшифровку AES-256-CBC значения последнего аргумента, используя предоставленный ключ/iv, и присваивает результат переменной, указанной в первом аргументе.

Директивы потока srt proxy

srt_proxy_pass

  • синтаксис: srt_proxy_pass address;
  • по умолчанию: ``
  • контекст: stream, server

Устанавливает адрес проксируемого сервера.

srt_proxy_connect_timeout

  • синтаксис: srt_proxy_connect_timeout timeout;
  • по умолчанию: 60s
  • контекст: srt, server

Определяет таймаут для установления соединения с проксируемым сервером.

srt_proxy_timeout

  • синтаксис: srt_proxy_timeout timeout;
  • по умолчанию: 10m
  • контекст: srt, server

Устанавливает таймаут между двумя последовательными операциями чтения или записи на соединениях с клиентом или проксируемым сервером. Если данные не передаются в течение этого времени, соединение закрывается.

srt_proxy_buffer_size

  • синтаксис: srt_proxy_buffer_size size;
  • по умолчанию: 64k
  • контекст: srt, server

Устанавливает размер буфера, используемого для чтения данных с проксируемого сервера.

srt_proxy_stream_id

  • синтаксис: srt_proxy_stream_id expr;
  • по умолчанию: ``
  • контекст: srt, server

Устанавливает идентификатор потока SRT, смотрите документацию libsrt по опции SRTO_STREAMID для получения дополнительной информации.

Значение параметра может содержать переменные.

srt_proxy_passphrase

  • синтаксис: srt_proxy_passphrase expr;
  • по умолчанию: ``
  • контекст: srt, server

Устанавливает пароль для шифрования, смотрите документацию libsrt по опции SRTO_PASSPHRASE для получения дополнительной информации.

Значение параметра может содержать переменные.

Встроенные переменные

Основные

  • binary_remote_addr - адрес клиента в двоичном формате, длина значения всегда 4 байта для IPv4 адресов или 16 байт для IPv6 адресов
  • bytes_received - количество байт, полученных от клиента
  • bytes_sent - количество байт, отправленных клиенту
  • connection - серийный номер соединения
  • hostname - имя хоста
  • msec - текущее время, в секундах с разрешением до миллисекунд
  • nginx_version - версия nginx
  • peer_version - версия libsrt удаленного пира, смотрите документацию libsrt по опции SRTO_PEERVERSION для получения дополнительной информации.
  • pid - PID рабочего процесса
  • protocol - протокол, используемый для связи с клиентом, всегда равен SRT
  • remote_addr - адрес клиента
  • remote_port - порт клиента
  • server_addr - адрес сервера, который принял соединение
  • server_port - порт сервера, который принял соединение
  • session_time - продолжительность сессии в секундах с разрешением до миллисекунд
  • status - статус сессии
  • stream_id - идентификатор потока SRT, смотрите документацию libsrt по опции SRTO_STREAMID для получения дополнительной информации.
  • time_iso8601 - локальное время в стандарте ISO 8601
  • time_local - локальное время в общем лог-файле

Upstream

  • upstream_addr - IP-адрес и порт сервера upstream
  • upstream_bytes_received - количество байт, полученных от сервера upstream
  • upstream_bytes_sent - количество байт, отправленных на сервер upstream
  • upstream_connect_time - время для соединения с сервером upstream, в секундах с разрешением до миллисекунд
  • upstream_first_byte_time - время для получения первого байта данных, в секундах с разрешением до миллисекунд
  • upstream_session_time - продолжительность сессии, в секундах с разрешением до миллисекунд