You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Nginx指令限制RTMP服务器HLS流的出站传输速率

Nginx-RTMP 服务器出站速率限制方案

可以通过Nginx内置配置实现速率限制,具体方案如下:


1. 单客户端连接限速(原生支持)

直接使用Nginx标准模块ngx_http_core_module自带的limit_rate指令即可实现,无需额外安装第三方模块:

  • 速率换算规则:1Mbps对应128KB/s,限制单连接2Mbps对应配置值为256k,限制1Mbps对应128k
  • 配置位置放在http块的location /段中即可
  • 可选优化:搭配limit_rate_after指令,设置前N字节数据不限速,可加快首帧加载速度,减少用户等待时间

2. 全局总出站带宽限制

Nginx内置没有直接的全局总带宽限制参数,可通过两种方式实现:

  • 间接实现:用limit_conn+limit_rate组合,比如总带宽要控制在2Mbps、单连接限速256k的场景下,设置全局最多允许8个并发连接即可,总带宽上限为8*256k=2Mbps
  • 精准实现:配合Linux系统自带的tc(流量控制)命令做出口限速,控制效果更稳定

注意事项

  • 你当前的源HLS流码率为3-4Mbps,如果直接限速到1-2Mbps,会导致客户端拉流速度跟不上播放速度,出现频繁卡顿。建议先新增转码环节,将HLS流的实际编码码率压缩到1-2Mbps范围内,再搭配限速规则使用,播放体验会更好
  • 你现有配置中的hls_variant参数是HLS多码率适配的声明参数,仅用于告知播放端当前流的码率档位,不会实际限制流的码率,也不会限制服务器出站带宽

修改后配置示例

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            notify_method get;
            live on;
            hls on;
            hls_path /nginx/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            drop_idle_publisher 10s;
            meta copy;
            hls_variant _low BANDWIDTH=166000;
            hls_variant _mid BANDWIDTH=244000;
        }
    }
}

http {
    sendfile off;
    tcp_nopush on;
    directio 512;
    default_type application/octet-stream;
    
    # 可选:全局连接限制配置,用于间接控制总带宽
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $server_name zone=total:10m;
    
    server {
        listen 8080;
        location / {
            # 可选:单IP并发连接限制,最多2个连接
            limit_conn perip 2;
            # 可选:全局并发连接限制,最多8个连接
            limit_conn total 8;
            # 单连接限速2Mbps
            limit_rate 256k;
            # 可选:前100k数据不限速,加快首屏加载
            limit_rate_after 100k;

            add_header 'Cache-Control' 'no-cache';
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }           
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }       
           root /nginx/hls/;
        }
    }
}

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:09:01