×

🌐 Distribution

Nginx · Redis · SSL · Lua

メイン → ストリーム → CDN アーキテクチャ

概要

メインサーバーは、認証、トークン生成、CDN ルーティングなどのオーケストレーターとしてのみ機能します。

認証、トークン、オーケストレーション。

Redis 経由のトークン検証、stream server へのプロキシ。

ソース ストリーム サーバー (HLS/MPEG-TS)。

IPTV プレーヤー (VLC、STB、モバイル アプリ)。

リクエストの流れ

クライアント認証(B2C API / プレイリンク)

Main は Redis でトークンを作成します (ソース URL、24 時間 TTL)

メインはクライアントを最適な CDN (302) にリダイレクトします

クライアントは CDN へのリダイレクトに従います

CDN は Main の Redis (Net X) 経由でトークンを検証します

CDN プロキシは stream server からクライアントへストリーミングします

ネットワークトポロジ

後退する

公共のインターネット

ヘルスチェックとフェイルオーバー

CdnRouter は、/health エンドポイント経由で 30 秒ごとに CDN の健全性をチェックします。

CDN が正常ではない → メインのローカル /cdn/ (セーフティ ネット)

トークンの詳細

形式

Redis キー

リダイレクトURL

サポートされている形式と URL の正規化

CdnToken は、さまざまなソース URL 形式を自動的に検出して処理します。

HLS プレイリスト — 直接使用され、単一のビデオ バリアントとすべてのオーディオ トラックにフィルターされたマスター プレイリスト

Raw MPEG-TS — サーバーが HLS をサポートしている場合 (stream server は常にサポートしています)、HLS に自動変換されます。それ以外の場合は、バッファリングをオフにして RAW としてプロキシされます。

ファイル (mp4、m4s、ts、mkv など) — 変換せずにそのまま直接プロキシされます。

DASH (mpd) — そのまま直接プロキシされます

Nginx マスター プレイリスト フィルター

HLS ストリームの場合、nginx ボディ フィルターはマスター プレイリスト (index.m3u8) を書き換えて、すべてのオーディオ/字幕トラックを保持しながら最初のビデオ バリアントのみを保持します。

以前(フルソニックより)

後(お客様へ納品後)

コンポーネント

32 文字の 16 進トークンを生成し、形式 (HLS/MPEG-TS/ファイル) を自動検出し、URL を正規化し、SETEX (24 時間 TTL) を使用して Redis に保存します。

クライアント IP ごとに最適な健全な CDN を検索します (CIDR 一致 + ヘルスチェック)。

nginx + lua-resty-redis + Redis を CDN サーバーに自動インストールします。

DB モデル: ドメイン、ip_scope (CIDR)、redis_host (Net X 上のメイン IP)、正常性ステータス。