nginx+rtmp+php 实现推流鉴权功能

在网上找了几篇nginx+rtmp实现推流鉴权的方法,大都是使用on_publish。on_publish的机制是将参数发送到其后面的url,url文件处理接收到的参数,根据结果返回相应的值。

其中,2xx代表验证成功;3xx代表转到其他地址;剩下的就是拒绝推送。

我使用一个php文件作为验证url。

有趣的是,网上教程大多没有nginx中配置php的步骤,甚至有些教程不建议在nginx中配置php location。我最初按照网上教程配置我的nginx.conf文件,发现无论rtmp://localhost:1935/live后面加不加验证参数都可以推送成功。查看日志文件,on_publish接收到的结果都是200。

我在nginx.conf中添加了php相关配置并更改php-fpm的配置文件之后,鉴权成功。还是要在nginx里添加php的配置,php也要做相应更改。

接下来是我的代码,安装nginx,rtmp和php的步骤百度一下就好:

nginx.conf

rtmp配置模块:

nginx+rtmp+php 实现推流鉴权功能

注意:php文件最好放在nginx/html 中;

php配置模块:

nginx+rtmp+php 实现推流鉴权功能

php-fpm的配置

找到php-fpm.conf文件,其中有listen = xxxxx ,将xxxx改为127.0.0.1:9000,要与nginx.conf中的相对应。

注意:如果php-fpm.conf中没有listen,去pool.d文件夹下找到www.conf文件,在这个文件夹中找listen。

 

重新启动nginx和php-fpm

/usr/local/nginx/sbin/nginx -s reload

service php-fpm7.3 restart

重启后查看127.0.0.1:9000 是否出于监听状态

netstat -nlpg

nginx+rtmp+php 实现推流鉴权功能

 

我在nginx/html里面写了一个index.php 文件,

<?php

phpinfo()

?>

可以验证是否配置成功。

在浏览器查看index.php文件 如果出现下图所示的页面,则代表配置成功。

nginx+rtmp+php 实现推流鉴权功能

附上我的测试文件on-publish.php

nginx+rtmp+php 实现推流鉴权功能

推流url:rtmp://服务器ip地址:1935/live/test?user=user&pass=pass

最后,这篇博客是我的一点拙见,希望能给大家带来帮助。