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

如何完全断开RTMP模块的publisher推流并阻止其重新连接?

阻止RTMP Publisher重连的解决方案

你之前调用的/control/drop/publisher接口仅能断开当前已建立的推流连接,不会对后续新的推流请求做拦截,只要推流端配置了自动重连逻辑,就会马上重新推流成功。要彻底阻止其接入,可采用以下几种方案:

方法1:业务层动态鉴权封禁(推荐)

在RTMP服务端配置推流鉴权回调,由你的业务服务统一管控推流权限:

  • 以常用的nginx-rtmp-module为例,修改RTMP配置,新增on_publish回调指向你的业务服务接口:
    rtmp {
        server {
            listen 1935;
            application live {
                live on;
                # 所有推流请求先转发到该接口校验
                on_publish http://127.0.0.1:你的业务服务端口/rtmp_publish_auth;
            }
        }
    }
    
  • 业务服务维护一个推流黑名单列表,支持按流名称、推流端IP、推流鉴权密钥等维度封禁
  • 当需要封禁指定流时,将流名91fde028680ea9a8195d4334e170db7e加入黑名单,后续该推流端发起请求时,业务接口直接返回403状态码,即可拒绝推流
  • 该方案灵活度最高,支持细粒度管控,不需要重启或重载流媒体服务配置

方法2:IP层临时封禁

如果仅需要临时封禁,且不需要细粒度管控,可以直接通过防火墙规则拦截推流端IP的访问:

  • 封禁命令(以Linux iptables为例,默认RTMP端口为1935):
    iptables -I INPUT -s 对应推流端的公网IP -p tcp --dport 1935 -j DROP
  • 解封命令:
    iptables -D INPUT -s 对应推流端的公网IP -p tcp --dport 1935 -j DROP
  • 注意:如果推流端使用了代理、CDN中转或者和其他合法推流端共用出口IP,该方法会误封其他正常用户,谨慎使用

方法3:流媒体服务自带封禁接口

如果你使用的是SRS等自带流管控能力的流媒体服务,可以直接调用官方提供的禁用流接口,断开连接的同时拦截后续推流请求:
http://你的SRS服务地址/api/v1/streams/close?app=live&stream=91fde028680ea9a8195d4334e170db7e

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:45:01