Nginx · Redis · SSL · Lua

ภาพรวม
เซิร์ฟเวอร์หลักทำหน้าที่เป็นผู้ควบคุมเท่านั้น — การรับรองความถูกต้อง การสร้างโทเค็น การกำหนดเส้นทาง CDN
การรับรองความถูกต้อง โทเค็น การเรียบเรียง
การตรวจสอบโทเค็นผ่าน Redis พร็อกซีไปยัง stream server
เซิร์ฟเวอร์สตรีมต้นทาง (HLS/MPEG-TS)
เครื่องเล่น IPTV (VLC, STB, แอพมือถือ)
ลูกค้ารับรองความถูกต้อง (B2C API / ลิงค์เล่น)
Main สร้างโทเค็นใน Redis (URL ต้นทาง, TTL 24 ชั่วโมง)
ลูกค้าเปลี่ยนเส้นทางหลักไปยัง CDN ที่ดีที่สุด (302)
ลูกค้าติดตามการเปลี่ยนเส้นทางไปยัง CDN
CDN ตรวจสอบโทเค็นผ่าน Redis ของ Main (Net X)
พร็อกซี CDN สตรีมจาก stream server ไปยังไคลเอนต์
ทางเลือก
อินเทอร์เน็ตสาธารณะ
CdnRouter ตรวจสอบสุขภาพ CDN ทุกๆ 30 วินาทีผ่าน /health endpoint
ไม่มี CDN ที่ดีต่อสุขภาพ → ท้องถิ่น /cdn/ บน Main (ตาข่ายนิรภัย)
รูปแบบ
URL เปลี่ยนเส้นทาง
CdnToken ตรวจจับและจัดการรูปแบบ URL แหล่งที่มาที่แตกต่างกันโดยอัตโนมัติ
เพลย์ลิสต์ HLS — ใช้โดยตรง เพลย์ลิสต์หลักกรองเป็นวิดีโอเดี่ยวและแทร็กเสียงทั้งหมด
Raw MPEG-TS - แปลงเป็น HLS อัตโนมัติหากเซิร์ฟเวอร์รองรับ (stream server จะทำเสมอ) มิฉะนั้นจะเป็นพร็อกซีดิบโดยปิดบัฟเฟอร์
ไฟล์ (mp4, m4s, ts, mkv ฯลฯ) — พร็อกซีโดยตรงตามที่เป็นอยู่ ไม่มีการแปลง
DASH (mpd) — พร็อกซีโดยตรงตามที่เป็น
สำหรับสตรีม HLS ตัวกรองเนื้อหา nginx จะเขียนเพลย์ลิสต์หลักใหม่ (index.m3u8) เพื่อเก็บเฉพาะวิดีโอรูปแบบแรกในขณะที่ยังคงรักษาแทร็กเสียง/คำบรรยายทั้งหมด
ก่อน (จาก stream server)
หลังจาก (ส่งถึงลูกค้า)
สร้างโทเค็นฐานสิบหก 32 อักขระ รูปแบบการตรวจจับอัตโนมัติ (HLS/MPEG-TS/ไฟล์) ปรับมาตรฐาน URL จัดเก็บใน Redis ด้วย SETEX (TTL 24 ชั่วโมง)
ค้นหา CDN เพื่อสุขภาพที่ดีที่สุดตาม IP ไคลเอนต์ (การจับคู่ CIDR + การตรวจสุขภาพ)
ติดตั้ง nginx + lua-resty-redis + Redis อัตโนมัติบนเซิร์ฟเวอร์ CDN
โมเดล DB: โดเมน, ip_scope (CIDR), redis_host (IP หลักบน Net X), สถานะสุขภาพ