AllInOne:媒体代理教程

June 24, 2026 · View on GitHub

简介

AllInOne 是一组媒体代理工具和配置,用于优化媒体流、下载和代理。本教程涵盖媒体代理服务的设置、配置和使用模式。

概览

功能描述
媒体代理通过你的服务器代理媒体流
CDN 集成通过 CDN 分发媒体
格式转换实时转换媒体格式
缓存缓存频繁访问的媒体
速率限制控制带宽使用
访问控制限制媒体访问

系统要求

组件最低要求推荐配置
CPU2 核4+ 核
内存1 GB4 GB
磁盘10 GB100 GB SSD
网络100 Mbps1 Gbps
操作系统LinuxUbuntu 22.04 LTS

安装

Docker 设置

docker run -d \
  --name media-proxy \
  -p 8080:8080 \
  -v ./config:/config \
  -v ./cache:/cache \
  media-proxy:latest

Nginx 代理配置

server {
    listen 80;
    server_name media.example.com;

    location /proxy/ {
        proxy_pass https://upstream-media-server/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_buffering on;
        proxy_cache media_cache;
        proxy_cache_valid 200 24h;
    }

    proxy_cache_path /var/cache/nginx/media
        levels=1:2
        keys_zone=media_cache:100m
        max_size=10g
        inactive=60m;
}

代理类型

正向代理

功能描述
方向客户端到服务器
用例隐藏客户端身份
认证用户名/密码
缓存响应缓存

反向代理

功能描述
方向服务端
用例负载均衡、SSL 终止
认证服务端认证
缓存内容缓存

透明代理

功能描述
方向无需配置即可拦截
用例网络级代理
认证基于 IP
缓存网络级缓存

媒体格式

支持的格式

格式类型扩展名
MP4视频.mp4
HLS流媒体.m3u8、.ts
DASH流媒体.mpd
MP3音频.mp3
FLAC音频.flac
AAC音频.aac
WebM视频.webm
MKV视频.mkv

流媒体协议

协议描述用例
HLSHTTP Live StreamingApple 设备、Web
DASH动态自适应流跨平台
RTMP实时消息协议直播
RTSP实时流协议IP 摄像头
WebRTCWeb 实时通信低延迟

缓存策略

缓存层级

层级位置持续时间
浏览器客户端缓存分钟到小时
CDN边缘服务器小时到天
代理你的服务器小时到周
源站源服务器永久

缓存配置

设置用途
max_size10 GB最大缓存大小
inactive60 分钟驱逐前的时间
valid 20024 小时OK 响应的缓存时间
valid 4041 分钟未找到的缓存时间

速率限制

速率限制层级

层级请求数/分钟带宽
Free601 Mbps
Basic30010 Mbps
Premium1000100 Mbps
Enterprise无限制无限制

Nginx 速率限制

limit_req_zone $binary_remote_addr zone=media:10m rate=10r/s;

location /media/ {
    limit_req zone=media burst=20 nodelay;
    proxy_pass http://backend;
}

访问控制

认证方式

方式描述
API Key查询参数或头部
TokenJWT 或 Bearer 令牌
IP Whitelist允许的 IP 地址
Referrer检查 referer 头部
Signed URL有时限的 URL

签名 URL 示例

https://media.example.com/video.mp4?token=abc123&expires=1700000000
参数用途
tokenHMAC 签名
expiresUnix 时间戳过期时间

转码

FFmpeg 集成

操作命令
转码ffmpeg -i input.mp4 -c:v h264 output.mp4
缩放ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
提取音频ffmpeg -i input.mp4 -vn output.mp3
HLS 转换ffmpeg -i input.mp4 -hls_time 10 output.m3u8

转码配置

配置分辨率码率用例
4K3840x216020 Mbps高级品质
1080p1920x10808 Mbps标准品质
720p1280x7204 Mbps移动/带宽
480p854x4802 Mbps低带宽
仅音频N/A128 kbps音乐流

监控

需要跟踪的指标

指标工具阈值
请求速率Prometheus< 1000 req/s
错误率Prometheus< 1%
缓存命中率Nginx> 80%
带宽vnStat< 80% 容量
磁盘使用df< 80% 满
延迟ping< 100ms

日志

日志内容
Access log请求 URL、状态、大小
Error log错误、警告
Cache log缓存命中、未命中
Transcode log转换状态

安全

实践实施
HTTPS使用 Let's Encrypt 的 SSL 证书
速率限制Nginx limit_req 模块
输入验证清理 URL 和参数
访问控制基于令牌的认证
CORS限制允许的来源
CSP内容安全策略头部

故障排除

问题原因解决方案
流媒体缓慢带宽低启用缓存,使用 CDN
缓冲服务器过载添加速率限制,优化
403 Forbidden访问控制检查认证
缓存未命中配置错误验证缓存设置
转码失败FFmpeg 错误检查输入格式
高延迟网络问题使用更近的 CDN 边缘

总结

媒体代理解决方案为媒体流提供内容分发、缓存和访问控制。正确配置缓存、速率限制和安全措施可确保可靠高效的媒体传输。与 FFmpeg 等转码工具的集成支持格式转换和自适应比特率流。