简单实现nginx-rtmp-module推流权限控制-胡新春个人博客
  •  首页
  •  游戏/动漫
  •  日记/生活
  •  程序员式幽默
  •  闲言碎语
  •  博客大计事
  •  留言板
  • 
    简单实现nginx-rtmp-module推流权限控制
     作者:胡新春  发布时间:2018-04-05 20:45:52  访客:350

    之前写了一篇文章,利用nginx和nginx-rtmp-module实现直播。不过,之前只是做到了能够直播而已,没有权限控制,只要知道rtmp的URL就能够推送视频流,这样很危险。本文是在之前文章的基础上利用nginx和nginx-rtmp-module属性对推流权限进行简单验证。


    通过在模块配置文件中设置 on_publish


    编辑配置文件nginx.conf

    rtmp {
        server {
            listen 1935;
            ping 30s;
            notify_method get;
    
            application myapp {
                live on;
                publish_notify on;
                on_publish http://huxinchun.com:80/on_publish.php;#此处为任意可运行php的服务器
            }
    }

    然后在on_publish.php中做我们的处理。


    例如:


    在php服务器中新建on_publish.php文件

    <?php
    
    // ?user=hxc&pass=123456  此处为推流时的秘钥组成,其中用户为:hxc 密码:123456
    
    $user = isset($_GET['user']) ? $_GET['user'] : '';
    $pass = isset($_GET['pass']) ? $_GET['pass'] : '';
    
    if (empty($user) || empty($pass)) {
        echo "wrong query input";
        header('HTTP/1.0 404 Not Found');
        exit();
    }
    
    $saveuser = hxc; //设置用户
    $savepass = 123456; //设置密码
    
    if (strcmp($user, $saveuser) == 0 && strcmp($pass, $savepass) == 0) {
        echo "Username and Password OK";
    } else {
        echo "Username or Password wrong";
        header('HTTP/1.0 404 Not Found');
        exit();
    }
    
    ?>

    此代码简单的作了用户验证,也可以改成带数据库验证以及加入更多参数进行验证。


    推流地址:rtmp://localhost:1935/myapp


    推流秘钥:?user=hxc&pass=123456

    其中test为streamkey,?user=user&pass=pass用来验证的

    1522834451240210.png



    流地址播放:


    参考资料:

    https://blog.csdn.net/iam_shuaidaile/article/details/50599943

    http://www.ptbird.cn/nginx-rtmp-multi-channel.html


    点评一下

    
    程序:HXC博客v2.0 主题:HXC博客前端Funs主题    基于CodeIgniter框架构建
    博客平稳运行2年+