在网上找了几篇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配置模块:
注意:php文件最好放在nginx/html 中;
php配置模块:
php-fpm的配置:
找到php-fpm.conf文件,其中有listen = xxxxx ,将xxxx改为127.0.0.1:9000,要与nginx.conf中的相对应。
注意:如果php-fpm.c