先判断卡顿究竟来自哪里



视频问题不一定是 Nginx 配置错误。可📢以先观察浏览器开发者工具中的请求状态、服务器带宽和磁盘读写情况,再确定优化方向。



mp4 指令🤔依赖 Nginx 的 MP4 模块,并不是所有编译版本都默认包含。它适合需要 MP4 伪流式播放或按起始时间请求的场景,但不能替代 Range 支持。若服务器提示未知指令,应先确认模块是否安装,不📌要直接把这条指令复制到生产环境。



上面的数值只是配置思路,不是所有📢服务器都应照搬。假设每个用户持续消耗 5 Mbps,100 个用户理论上就需要约 500 Mbps 的视频流量,还要预留协议开销、网页请求和其他业务的带宽。带宽不足时,继续增加 worker_connections▶️ 并不能解决卡顿。



上线后用四项指标验证效果



并发参数不能越大越好💯。worker_processes 可以根据 CPU 核数自动设置,worker_connections 则要结合文件描述符上限、代理连接数和实际带宽计算。一个 Nginx 工作进程的连接数并不等于可以承载的有效视频用户数,因为反向代理场景中,一名用户可能同时占用客户端连接和上游连接。



固定不变的点播视频适合使用带版本号的文件名,例如更换视频后改变文件路径,而不是覆盖同一个地址。这样可以放心设置较长缓存,也能避免用户因为旧缓存继续播放过期文件。带权限的视频则要谨慎设置公共缓存,避免不同用户之间发生内容越权。



Nginx 不会自动降低视频码率,也不会把一个 4K 文件变成适合移动网络播放的版本⭐。想让不同网络条件下都保持流畅,通常需要准备多档清晰度和码率,并让播放器根据实时带宽进行自适应切换。



MP4 直出时,先保证拖动和分段请求正常



MP4、WebM、TS 和 M4S 已经属于压缩后的媒体格式,继续使用 gzip 往往会增加 CPU 消耗,却很难明显减少传输体积。因此,视频二进制文件一般应关闭 gzip。



举报/反馈