×

🌐 Distribution

Nginx · Redis · SSL · Lua

Main → Stream → CDN-Architektur

Übersicht

Der Hauptserver fungiert nur als Orchestrierer — Authentifizierung, Token-Generierung, CDN-Routing. Er berührt niemals die Streamdaten. Streams fließen direkt von stream server über CDN-Proxies zu den Clients. Jedes Client-Netzwerk verfügt über einen lokalen CDN für niedrige Latenz. Ein öffentlicher CDN-Z dient als Fallback.

Auth, Tokens, Orchestrierung. Keine Streamdaten.

Token-Validierung über Redis, Proxy zu stream server.

Quellstream-Server (HLS/MPEG-TS).

IPTV-Player (VLC, STB, Mobile-App).

Anfragefluss

Client authentifiziert sich (B2C-API / Play-Link)

Main erstellt Token in Redis (Quell-URL, 24h TTL)

Hauptserver leitet den Client zum besten CDN weiter (302)

Client folgt der Weiterleitung zum CDN

CDN validiert das Token über den Redis des Hauptserver (Net X)

CDN proxiert Stream von stream server zu Client

Netzwerktopologie

Fallback

öffentliches Internet

Gesundheitsprüfung & Failover

CdnRouter prüft die CDN-Gesundheit alle 30 Sekunden über den /health-Endpunkt. Wenn der beste CDN für das Subnetz des Clients ausgefallen ist, wird auf den nächsten passenden CDN zurückgegriffen (sortiert nach CIDR-Präfixlänge, am spezifischsten zuerst).

Kein CDN gesund -> lokales /cdn/ auf Main (Sicherheitsnetz)

Token-Details

CDN-Auth-Token-Format

Redis-Schlüssel

Weiterleitungs-URL

Unterstützte Formate & URL-Normalisierung

CdnToken erkennt und verarbeitet automatisch verschiedene Quell-URL-Formate. Für MPEG-TS oder reine Stream-Pfade prüft er den Server auf HLS-Verfügbarkeit über eine HEAD-Anfrage.

HLS Playlist – direkt verwendet, Master-Playlist auf einzelne Video-Variante + alle Audio-Spuren gefiltert

Rohes MPEG-TS — wird automatisch in HLS konvertiert, wenn der Server dies unterstützt (stream server unterstützt dies immer), andernfalls wird roh mit abgeschaltetem Puffern weitergeleitet

Datei (mp4, m4s, ts, mkv, etc.) — wird direkt als-is weitergeleitet, keine Konvertierung

DASH (mpd) - direkt durchgereicht wie ist

Nginx Master-Playlist-Filter

Für HLS-Streams schreibt der nginx Body Filter die Master-Playlist (index.m3u8) neu, um nur die erste Video-Variante zu behalten und alle Audio/Untertitel-Spuren zu erhalten. Dies verhindert, dass Player mehrere Video-Qualitäten gleichzeitig herunterladen.

Vorher (von stream server)

Nachher (an den Client ausgeliefert)

Komponenten

Generiert 32-stellige Hex-Tokens, erkennt automatisch das Format (HLS/MPEG-TS/Datei), normalisiert die URL, speichert in Redis mit SETEX (24h TTL).

Findet den besten gesunden CDN basierend auf der Client-IP (CIDR-Übereinstimmung + Health-Check). Fallback-Kette.

Installiert automatisch nginx + lua-resty-redis + Redis auf CDN-Servern. Injiziert /cdn/ Location in das Hauptnginx.

DB-Modell: domain, ip_scope (CIDR), redis_host (Haupt-IP auf Net X), Gesundheitsstatus.