×

🌐 Distribution

Nginx · Redis · SSL · Lua

메인 → 스트림 → CDN 아키텍처

개요

메인 서버는 인증, 토큰 생성, CDN 라우팅 등 오케스트레이터 역할만 수행합니다.

인증, 토큰, 오케스트레이션.

stream server 프록시인 Redis를 통한 토큰 검증.

소스 스트림 서버(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/(안전망)

토큰 세부정보

체재

레디스 키

리디렉션 URL

지원되는 형식 및 URL 정규화

CdnToken은 다양한 소스 URL 형식을 자동으로 감지하고 처리합니다.

HLS 재생 목록 — 직접 사용되며 단일 비디오 변형 + 모든 오디오 트랙으로 필터링된 마스터 재생 목록

원시 MPEG-TS — 서버가 지원하는 경우 HLS로 자동 변환되고(stream server 항상 지원함), 그렇지 않으면 버퍼링이 꺼진 상태로 원시 프록시 처리됨

파일(mp4, m4s, ts, mkv 등) - 있는 그대로 직접 프록시되며 변환 없음

DASH(mpd) — 있는 그대로 직접 프록시됨

Nginx 마스터 재생 목록 필터

HLS 스트림의 경우 nginx 본문 필터는 마스터 재생 목록(index.m3u8)을 다시 작성하여 모든 오디오/자막 트랙을 보존하면서 첫 번째 비디오 변형만 유지합니다.

이전 (플루소닉에서)

이후(고객에게 전달됨)

구성요소

32자 16진수 토큰을 생성하고, 형식(HLS/MPEG-TS/파일)을 자동 감지하고, URL을 정규화하고, SETEX(24시간 TTL)를 사용하여 Redis에 저장합니다.

클라이언트 IP(CIDR 일치 + 상태 확인)를 기준으로 가장 건강한 CDN을 찾습니다.

CDN 서버에 nginx + lua-resty-redis + Redis를 자동 설치합니다.

DB 모델: 도메인, ip_scope(CIDR), redis_host(Net X의 기본 IP), 상태.