×

🌐 Distribution

Nginx · Redis · SSL · Lua

Utama → Strim → Seni Bina CDN

Gambaran keseluruhan

Pelayan utama bertindak sebagai orkestra sahaja — pengesahan, penjanaan token, penghalaan CDN.

Pengesahan, token, orkestrasi.

Pengesahan token melalui Redis, proksi kepada stream server.

Pelayan strim sumber (HLS/MPEG-TS).

Pemain IPTV (VLC, STB, aplikasi mudah alih).

Aliran Permintaan

Pelanggan mengesahkan (B2C API / pautan main)

Token ciptaan utama dalam Redis (URL sumber, TTL 24j)

Ubah hala utama pelanggan ke CDN terbaik (302)

Pelanggan mengikuti ubah hala ke CDN

CDN mengesahkan token melalui Main's Redis (Net X)

Proksi CDN mengalir dari stream server kepada pelanggan

Topologi Rangkaian

sandaran

internet awam

Pemeriksaan Kesihatan & Failover

CdnRouter menyemak kesihatan CDN setiap 30s melalui /health endpoint.

Tiada CDN sihat → tempatan /cdn/ di Utama (jaring keselamatan)

Butiran Token

Format

Kekunci Redis

Ubah hala URL

Format yang Disokong & Normalisasi URL

CdnToken secara automatik mengesan dan mengendalikan format URL sumber yang berbeza.

Senarai main HLS — digunakan terus, senarai main induk ditapis kepada varian video tunggal + semua trek audio

MPEG-TS mentah — ditukar secara automatik kepada HLS jika pelayan menyokongnya (stream server sentiasa melakukannya), jika tidak, proksi mentah dengan penimbalan dimatikan

Fail (mp4, m4s, ts, mkv, dsb.) — diproksi secara langsung seperti sedia ada, tiada penukaran

DASH (mpd) — diproksikan terus apa adanya

Penapis Senarai Main Induk Nginx

Untuk strim HLS, penapis badan nginx menulis semula senarai main induk (index.m3u8) untuk menyimpan hanya varian video pertama sambil mengekalkan semua trek audio/sari kata.

Sebelum (dari stream server)

Selepas (diserahkan kepada pelanggan)

Komponen

Menghasilkan token hex 32-char, format auto-kesan (HLS/MPEG-TS/fail), menormalkan URL, menyimpan dalam Redis dengan SETEX (24j TTL).

Cari CDN sihat terbaik mengikut IP pelanggan (padanan CIDR + pemeriksaan kesihatan).

Auto-pasang nginx + lua-resty-redis + Redis pada pelayan CDN.

Model DB: domain, ip_scope (CIDR), redis_host (IP Utama pada Net X), status kesihatan.