MP4 点播文件应优先使用静态分发



open_file_cache max=1000 inactive=60s;



视频服务器的文件描述符上限需要与 Nginx 连接上🔑限匹配。worker_connections 设置很大而系统 nofile 仍然很低时,配置不会带来实际并发提升。磁盘为机械盘时,大量用户同时拖动视频可能先触发随机 I/O 瓶颈;SSD、分层缓存或切片分发可以改善随机读取,但不能消除总带宽限制。



用响应头和监控数据验收优化结果



HLS 切片代理配置中的 proxy_cache 需要提前在 http 层声明对应缓存区域,proxy_cache_lock 可以减少同一切片首次失效时的大量并发回源。直播播放列表不应直接沿用切片的十分钟缓存时间,播放列表和媒体切片需要使用不同的缓存规则。私有视频、临时签名视💎频和带用户权限的响应,必须确认缓存键、响应头和鉴权逻辑不会造成跨用户复用。



反向代理和切片缓存应分别处理



HLS 与 DASH 视频切片通常比完整 MP4 更适合缓存,因为播放🎉器只请求当前需要的片段。点播播放列表可以设置较长缓存时间,直播播放列表则应设置较短时间或禁止长时间缓存;已经生成且不会改变的 ts、fmp4 或 m4s 切片可以使用更长 TTL。切片缓存时,鉴权参数不能被无条件忽略,否则可能造成不同用户共用不应共享的内容。



Nginx 静态视频传输通常原生支持字节范围请求,播放器拖动进度时会发送 Range 请求,并期待服务器返回 206、Content-Range 和正确的 Content-Length。只添加 Accept-Ranges 响应📢头不能凭空创造断点续传能力,文件读取模块、代理层和上游响应都必须允许范围请求。



add_h🌈eader Cache-Control "public, max-age=86400";



HLS 与 DASH 切片应把缓存对象拆开



视频缓存头应根据文件是否会变化来设置。带有唯一版本名的文件可以使用较长 max-age;同一路径会被替换的视频不应盲目设置长期缓存,否则用户可能继续播放🌟旧内容。出现 416 状态时,应检查客户端请求范围是否超出当前文件大小,也要确认文件是否🎵在生成或替换过程中发生了尺寸变化。



Nginx 反向代理 MP4 时,配置重点是避免无意义的整文件缓冲,并让上游正确返回范围响应。对于☀️源站已经支持 Range 的渐进式 MP4,可以考虑关闭代理响应缓冲,让数据按客户端读取速度转发;对于 HLS 或 DASH 小切片,开☀️启代理缓存通常更有效,因为相同片段能被多个请求复用。



proxy_set_header Connection "";



断点续传、文件读取与缓存头要同时正确



MP4 点播文件适合直接放在 Nginx 可读取的存储目录中,并通过访问控制或签名参数限制未授权请求。直接分发可以减少应用服务器参与文件传输的时间,应用层只负责登录状态、权限判断和播放凭证生成。视频文件名保持稳定时可以使用较长缓存;文⭐件会被覆盖时,应使用版本化文件名或及时清理旧缓存。



Nginx 视频服务的验收不能只看播放器是否能够播放,浏览器网络面板和服务器指标需要同时检查。用户拖动到未加载位置时,应看到范围请求;服务器日志还应能💪区分客户端慢、源站慢💡、磁盘慢和带宽耗尽。



举报/反馈