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-Adressenbytes_received- Anzahl der vom Client empfangenen Bytesbytes_sent- Anzahl der an den Client gesendeten Bytesconnection- Verbindungsseriennummerhostname- Hostnamemsec- aktuelle Zeit in Sekunden mit Millisekundenauflösungnginx_version- nginx-Versionpeer_version- libsrt-Version des entfernten Peers, siehe die libsrt-Dokumentation derSRTO_PEERVERSION-Option für weitere Details.pid- PID des Worker-Prozessesprotocol- Protokoll, das zur Kommunikation mit dem Client verwendet wird, bewertet immer zuSRTremote_addr- Clientadresseremote_port- Clientportserver_addr- die Adresse des Servers, der die Verbindung akzeptiert hatserver_port- der Port des Servers, der die Verbindung akzeptiert hatsession_time- Sitzungsdauer in Sekunden mit Millisekundenauflösungstatus- Sitzungsstatusstream_id- SRT-Stream-ID, siehe die libsrt-Dokumentation derSRTO_STREAMID-Option für weitere Details.time_iso8601- lokale Zeit im ISO 8601 Standardformattime_local- lokale Zeit im Common Log Format
Upstream
upstream_addr- die IP-Adresse und der Port des Upstream-Serversupstream_bytes_received- Anzahl der vom Upstream-Server empfangenen Bytesupstream_bytes_sent- Anzahl der an den Upstream-Server gesendeten Bytesupstream_connect_time- Zeit zum Verbinden mit dem Upstream-Server in Sekunden mit Millisekundenauflösungupstream_first_byte_time- Zeit zum Empfangen des ersten Datenbytes in Sekunden mit Millisekundenauflösungupstream_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.