Nginx · Redis · SSL · Lua

Przegląd
Serwer Main działa tylko jako orkiestrator — uwierzytelnianie, generowanie tokenów, routing CDN. Nigdy nie przetwarza danych strumieniowych. Strumienie płyną bezpośrednio z stream server przez proxy CDN do klientów. Każda sieć klienta ma lokalny CDN dla niskiego opóźnienia. Publiczny CDN-Z służy jako fallback.
Uwierzytelnianie, tokeny, orkiestracja. Brak danych strumieniowych.
Walidacja tokena przez Redis, proxy do stream server.
Serwery strumienia źródłowego (HLS/MPEG-TS).
Odtwarzacz IPTV (VLC, STB, aplikacja mobilna).
Klient uwierzytelnia się (API B2C / link play)
Main tworzy token w Redis (źródłowy URL, 24h TTL)
Main przekierowuje klienta do najlepszego CDN (302)
Klient podąża za przekierowaniem do CDN
CDN waliduje token przez Redis Main (Sieć X)
CDN serwuje strumień z stream server do klienta
fallback
publiczny internet
CdnRouter sprawdza stan CDN co 30s przez punkt końcowy /health. Jeśli najlepszy CDN dla podsieci klienta jest niedostępny, następuje przełączenie na kolejny pasujący CDN (posortowane według długości prefiksu CIDR, najbardziej specyficzne jako pierwsze).
Brak zdrowego CDN → lokalny /cdn/ na Main (zabezpieczenie)
Format
URL przekierowania
CdnToken automatycznie wykrywa i obsługuje różne formaty URL źródłowego. Dla MPEG-TS lub gołych ścieżek strumieniowych, sonduje serwer pod kątem dostępności HLS za pomocą żądania HEAD.
Playlista HLS — używana bezpośrednio, master playlista filtrowana do jednego wariantu wideo + wszystkie ścieżki audio
Czysty MPEG-TS — automatycznie konwertowany do HLS, jeśli serwer to obsługuje (stream server zawsze obsługuje), w przeciwnym razie przekazywany surowo z wyłączonym buforowaniem
Plik (mp4, m4s, ts, mkv, itp.) — przekazywany bezpośrednio bez zmian, bez konwersji
DASH (mpd) — przekazywany bezpośrednio bez zmian
W przypadku strumieni HLS filtr treści nginx przepisuje master playlistę (index.m3u8), aby zachować tylko pierwszy wariant wideo, jednocześnie zachowując wszystkie ścieżki audio/napisów. Zapobiega to odtwarzaczom z pobraniem wielu jakości wideo jednocześnie.
Przed (z stream server)
Po (dostarczane do klienta)
Generuje 32-znakowe tokeny w formacie heksadecymalnym, automatycznie wykrywa format (HLS/MPEG-TS/plik), normalizuje URL, przechowuje w Redis z SETEX (TTL 24h).
Znajduje najlepszy zdrowy CDN na podstawie IP klienta (dopasowanie CIDR + sprawdzenie stanu). Łańcuch awaryjny.
Automatycznie instaluje nginx + lua-resty-redis + Redis na serwerach CDN. Wstrzykuje lokalizację /cdn/ do głównego nginx.
Model DB: domena, ip_scope (CIDR), redis_host (Główny IP w Sieci X), status zdrowia.