Zum Inhalt

srt: Nginx SRT Modul

Installation

Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:

  • RedHat Enterprise Linux 7, 8, 9 und 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-srt
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-srt

Aktivieren Sie das Modul, indem Sie Folgendes oben in die Datei /etc/nginx/nginx.conf einfügen:

load_module modules/ngx_srt_module.so;

Dieses Dokument beschreibt nginx-module-srt v1.1 veröffentlicht am 05. Februar 2024.


Haivision SRT (Secure Reliable Transfer) / TCP Gateway. Unterstützt sowohl SRT zu TCP als auch TCP zu SRT, einschließlich bidirektionalem Datentransfer.

Die Implementierung verwendet libsrt für die SRT-Kommunikation. Der libsrt-Code wird in einem Neben-Thread ausgeführt, eventfd-Benachrichtigungen werden verwendet, um mit dem Haupt-Thread von nginx zu kommunizieren.

Konfiguration

Beispielkonfiguration

## SRT -> TCP Proxy
srt {
    server {
        listen 4321;
        proxy_pass tcp://127.0.0.1:5678;
    }
}

## TCP -> SRT Proxy
stream {
    server {
        listen 5432;
        srt_proxy_pass srt://127.0.0.1:4321;
    }
}

srt Kern-Direktiven

srt

  • Syntax: srt { ... }
  • Standard: -
  • Kontext: main

Stellt den Konfigurationsdateikontext bereit, in dem die srt server-Direktiven angegeben sind.

server

  • Syntax: server { ... }
  • Standard: -
  • Kontext: srt

Setzt die Konfiguration für einen Server.

listen

  • Syntax: listen address:port [backlog=number] [bind] [ipv6only=on|off] [reuseport];
  • Standard: -
  • Kontext: server

Setzt die Adresse und den Port für den UDP-Socket, auf dem der Server Verbindungen akzeptiert.

Siehe die Dokumentation der listen-Direktive des nginx stream-Moduls für weitere Details zu den unterstützten optionalen Parametern.

variables_hash_max_size

  • Syntax: variables_hash_max_size size;
  • Standard: 1024
  • Kontext: srt

Setzt die maximale Größe der Variablen-Hash-Tabelle.

variables_hash_bucket_size

  • Syntax: variables_hash_bucket_size size;
  • Standard: 64
  • Kontext: srt

Setzt die Bucket-Größe für die Variablen-Hash-Tabelle.

error_log

  • Syntax: error_log file [level];
  • Standard: logs/error.log error
  • Kontext: srt, server

Konfiguriert das Logging, siehe die Dokumentation der nginx-Kern-Direktive error_log für weitere Details.

fc_pkts

  • Syntax: fc_pkts number;
  • Standard: 25600
  • Kontext: srt, server

Setzt die maximale Anzahl an "in-flight" Paketen (Pakete, die gesendet wurden, aber noch nicht bestätigt sind).

Siehe die libsrt-Dokumentation der SRTO_FC-Option für weitere Details.

mss

  • Syntax: mss size;
  • Standard: 1500
  • Kontext: srt, server

Maximale Segmentgröße in Bytes.

Siehe die libsrt-Dokumentation der SRTO_MSS-Option für weitere Details.

recv_buf

  • Syntax: recv_buf size;
  • Standard: 8192 buffers
  • Kontext: srt, server

Größe des Empfangspuffers in Bytes.

Siehe die libsrt-Dokumentation der SRTO_RCVBUF-Option für weitere Details.

recv_udp_buf

  • Syntax: recv_udp_buf size;
  • Standard: 8192 buffers
  • Kontext: srt, server

Größe des Empfangspuffers für den UDP-Socket in Bytes.

Siehe die libsrt-Dokumentation der SRTO_UDP_RCVBUF-Option für weitere Details.

recv_latency

  • Syntax: recv_latency size;
  • Standard: 120ms
  • Kontext: srt, server

Die Latenz auf der Empfangsseite in Millisekunden.

Siehe die libsrt-Dokumentation der SRTO_RCVLATENCY-Option für weitere Details.

send_buf

  • Syntax: send_buf size;
  • Standard: 8192 buffers
  • Kontext: srt, server

Größe des Sendepuffers in Bytes.

Siehe die libsrt-Dokumentation der SRTO_SNDBUF-Option für weitere Details.

send_udp_buf

  • Syntax: send_udp_buf size;
  • Standard: 65536
  • Kontext: srt, server

Größe des Sendepuffers für den UDP-Socket in Bytes.

Siehe die libsrt-Dokumentation der SRTO_UDP_SNDBUF-Option für weitere Details.

send_latency

  • Syntax: send_latency size;
  • Standard: 120ms
  • Kontext: srt, server

Die minimale Empfangslatenz, die vom Sender bereitgestellt wird.

Siehe die libsrt-Dokumentation der SRTO_PEERLATENCY-Option für weitere Details.

passphrase

  • Syntax: passphrase expr;
  • Standard: ``
  • Kontext: srt, server

Setzt ein Passwort für die Verschlüsselung, siehe die libsrt-Dokumentation der SRTO_PASSPHRASE-Option für weitere Details.

Der Parameterwert kann Variablen enthalten.

in_buf_size

  • Syntax: in_buf_size size;
  • Standard: 64k
  • Kontext: srt, server

Setzt die Größe des Puffers, der zum Lesen von Daten vom Client verwendet wird.

srt map-Direktiven

map

  • Syntax: map string $variable { ... }
  • Standard: ``
  • Kontext: srt

Erstellt eine neue Variable, deren Wert von den Werten einer oder mehrerer der im ersten Parameter angegebenen Quellvariablen abhängt.

Siehe die Dokumentation der map-Direktive des nginx stream-Moduls für weitere Details.

map_hash_max_size

  • Syntax: map_hash_max_size size;
  • Standard: 2048
  • Kontext: srt

Setzt die maximale Größe der Hash-Tabelle für die Map-Variablen.

map_hash_bucket_size

  • Syntax: map_hash_bucket_size size;
  • Standard: 32|64|128
  • Kontext: srt

Setzt die Bucket-Größe für die Hash-Tabelle der Map-Variablen.

srt log-Direktiven

access_log

  • Syntax: access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];
  • Standard: off
  • Kontext: srt, server

Setzt den Pfad, das Format und die Konfiguration für einen gepufferten Log-Schreibvorgang.

Siehe die Dokumentation der access_log-Direktive des nginx stream-Moduls für weitere Details.

log_format

  • Syntax: log_format name [escape=default|json|none] string ...;
  • Standard: ``
  • Kontext: srt

Definiert ein Log-Format.

Siehe die Dokumentation der log_format-Direktive des nginx stream-Moduls für weitere Details.

open_log_file_cache

  • Syntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  • Standard: off
  • Kontext: srt, server

Definiert einen Cache, der die Dateideskriptoren häufig verwendeter Logs speichert, deren Namen Variablen enthalten.

Siehe die Dokumentation der open_log_file_cache-Direktive des nginx stream-Moduls für weitere Details.

srt proxy-Direktiven

proxy_pass

  • Syntax: proxy_pass address;
  • Standard: ``
  • Kontext: srt, server

Setzt die Adresse des proxied Servers.

proxy_connect_timeout

  • Syntax: proxy_connect_timeout timeout;
  • Standard: 60s
  • Kontext: srt, server

Definiert einen Timeout für die Herstellung einer Verbindung zu einem proxied Server.

proxy_timeout

  • Syntax: proxy_timeout timeout;
  • Standard: 10m
  • Kontext: srt, server

Setzt den Timeout zwischen zwei aufeinanderfolgenden Lese- oder Schreibvorgängen an Client- oder proxied Serververbindungen. Wenn innerhalb dieser Zeit keine Daten übertragen werden, wird die Verbindung geschlossen.

proxy_buffer_size

  • Syntax: proxy_buffer_size size;
  • Standard: 64k
  • Kontext: srt, server

Setzt die Größe des Puffers, der zum Lesen von Daten vom proxied Server verwendet wird.

proxy_protocol

  • Syntax: proxy_protocol on | off;
  • Standard: off
  • Kontext: srt, server

Aktiviert das PROXY-Protokoll für Verbindungen zu einem proxied Server.

proxy_header

  • Syntax: proxy_header expr;
  • Standard: ``
  • Kontext: srt, server

Definiert eine Zeichenfolge, die an den proxied Server gesendet wird, bevor Daten über SRT empfangen werden.

Der Parameterwert kann Variablen enthalten.

srt set misc-Direktiven

set_decode_base64

  • Syntax: set_decode_base64 $dst src;
  • Standard: ``
  • Kontext: srt

Führt eine Base64-Dekodierung des Wertes des zweiten Arguments durch und weist das Ergebnis der im ersten Argument angegebenen Variablen zu.

set_decode_base64url

  • Syntax: set_decode_base64url $dst src;
  • Standard: ``
  • Kontext: srt

Führt eine URL-sichere Base64-Dekodierung des Wertes des zweiten Arguments durch und weist das Ergebnis der im ersten Argument angegebenen Variablen zu.

set_aes_decrypt

  • Syntax: set_aes_decrypt $dst base64_key base64_iv src;
  • Standard: ``
  • Kontext: srt

Führt eine AES-256-CBC-Dekryptierung des Wertes des letzten Arguments durch, unter Verwendung des bereitgestellten Schlüssels/IV, und weist das Ergebnis der im ersten Argument angegebenen Variablen zu.

stream srt proxy-Direktiven

srt_proxy_pass

  • Syntax: srt_proxy_pass address;
  • Standard: ``
  • Kontext: stream, server

Setzt die Adresse des proxied Servers.

srt_proxy_connect_timeout

  • Syntax: srt_proxy_connect_timeout timeout;
  • Standard: 60s
  • Kontext: srt, server

Definiert einen Timeout für die Herstellung einer Verbindung zu einem proxied Server.

srt_proxy_timeout

  • Syntax: srt_proxy_timeout timeout;
  • Standard: 10m
  • Kontext: srt, server

Setzt den Timeout zwischen zwei aufeinanderfolgenden Lese- oder Schreibvorgängen an Client- oder proxied Serververbindungen. Wenn innerhalb dieser Zeit keine Daten übertragen werden, wird die Verbindung geschlossen.

srt_proxy_buffer_size

  • Syntax: srt_proxy_buffer_size size;
  • Standard: 64k
  • Kontext: srt, server

Setzt die Größe des Puffers, der zum Lesen von Daten vom proxied Server verwendet wird.

srt_proxy_stream_id

  • Syntax: srt_proxy_stream_id expr;
  • Standard: ``
  • Kontext: srt, server

Setzt die SRT-Stream-ID, siehe die libsrt-Dokumentation der SRTO_STREAMID-Option für weitere Details.

Der Parameterwert kann Variablen enthalten.

srt_proxy_passphrase

  • Syntax: srt_proxy_passphrase expr;
  • Standard: ``
  • Kontext: srt, server

Setzt ein Passwort für die Verschlüsselung, siehe die libsrt-Dokumentation der SRTO_PASSPHRASE-Option für weitere Details.

Der Parameterwert kann Variablen enthalten.

Eingebettete Variablen

Kern

  • binary_remote_addr - Clientadresse in binärer Form, die Länge des Wertes beträgt immer 4 Bytes für IPv4-Adressen oder 16 Bytes für IPv6-Adressen
  • bytes_received - Anzahl der vom Client empfangenen Bytes
  • bytes_sent - Anzahl der an den Client gesendeten Bytes
  • connection - Verbindungsseriennummer
  • hostname - Hostname
  • msec - aktuelle Zeit in Sekunden mit Millisekundenauflösung
  • nginx_version - nginx-Version
  • peer_version - libsrt-Version des entfernten Peers, siehe die libsrt-Dokumentation der SRTO_PEERVERSION-Option für weitere Details.
  • pid - PID des Worker-Prozesses
  • protocol - Protokoll, das zur Kommunikation mit dem Client verwendet wird, bewertet immer zu SRT
  • remote_addr - Clientadresse
  • remote_port - Clientport
  • server_addr - die Adresse des Servers, der die Verbindung akzeptiert hat
  • server_port - der Port des Servers, der die Verbindung akzeptiert hat
  • session_time - Sitzungsdauer in Sekunden mit Millisekundenauflösung
  • status - Sitzungsstatus
  • stream_id - SRT-Stream-ID, siehe die libsrt-Dokumentation der SRTO_STREAMID-Option für weitere Details.
  • time_iso8601 - lokale Zeit im ISO 8601 Standardformat
  • time_local - lokale Zeit im Common Log Format

Upstream

  • upstream_addr - die IP-Adresse und der Port des Upstream-Servers
  • upstream_bytes_received - Anzahl der vom Upstream-Server empfangenen Bytes
  • upstream_bytes_sent - Anzahl der an den Upstream-Server gesendeten Bytes
  • upstream_connect_time - Zeit zum Verbinden mit dem Upstream-Server in Sekunden mit Millisekundenauflösung
  • upstream_first_byte_time - Zeit zum Empfangen des ersten Datenbytes in Sekunden mit Millisekundenauflösung
  • upstream_session_time - Sitzungsdauer in Sekunden mit Millisekundenauflösung

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-srt.