srt: Модуль SRT для Nginx
Установка на Debian/Ubuntu
Эти документы относятся к APT пакету nginx-module-srt, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
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- версия nginxpeer_version- версия libsrt удаленного пира, смотрите документацию libsrt по опцииSRTO_PEERVERSIONдля получения дополнительной информации.pid- PID рабочего процессаprotocol- протокол, используемый для связи с клиентом, всегда равенSRTremote_addr- адрес клиентаremote_port- порт клиентаserver_addr- адрес сервера, который принял соединениеserver_port- порт сервера, который принял соединениеsession_time- продолжительность сессии в секундах с разрешением до миллисекундstatus- статус сессииstream_id- идентификатор потока SRT, смотрите документацию libsrt по опцииSRTO_STREAMIDдля получения дополнительной информации.time_iso8601- локальное время в стандарте ISO 8601time_local- локальное время в общем лог-файле
Upstream
upstream_addr- IP-адрес и порт сервера upstreamupstream_bytes_received- количество байт, полученных от сервера upstreamupstream_bytes_sent- количество байт, отправленных на сервер upstreamupstream_connect_time- время для соединения с сервером upstream, в секундах с разрешением до миллисекундupstream_first_byte_time- время для получения первого байта данных, в секундах с разрешением до миллисекундupstream_session_time- продолжительность сессии, в секундах с разрешением до миллисекунд