nginx-rtmp-module默認不限制推流權限、播放權限。若是想加入權限驗證,有不少種方法。html
方法一:修改源碼如:nginx
如何給 nginx rtmp 服務加入鑑權機制git
http://blog.csdn.net/cui918/article/details/53540397github
方法二:修改nginx配置如:web
http://blog.csdn.net/iam_shuaidaile/article/details/50599943post
崇尚簡單的話,直接修改配置就好。測試
其實還能夠更簡潔,僅修改nginx配置文件,不用跳轉到第三方web服務。
主要是利用on_publish跳轉到當前配置的一個「location」,在這裏進行驗證。關鍵點在於rtmp application節點下面要配置「notify_method get;」爲何呢?由於跳轉的時候,默認以POST方式傳輸參數,修改爲GET方式,nginx配置裏就能夠輕鬆處理了。(固然nginx經過配置文件也能夠處理post,只是複雜一些)。ui
本次測試使用的是win32版 nginx-rtmp,下載地址爲:spa
https://codeload.github.com/illuspas/nginx-rtmp-win32/zip/master
下載後解壓,修改配置文件nginx.conf(可直接複製使用,刪除了一些與本次測試無關的配置項,熟悉nginx配置的朋友也可在本身的配置文件中靈活修改)
****************************** nginx.conf******************************
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 8035;
application live {
live on;
notify_methodget;
on_publishhttp://127.0.0.1:8033/on_publish;
}
}
}
http {
server {
listen 8033;
location/on_publish{
default_typetext/html;
set$pass 0;
if($query_string ~* "pass=(.+)$") {
set$pass $1;
}
if($pass = 89437589) {
return200 pass.......$pass;
}
if($pass != 89437589) {
return404;
}
}
}
}
******************************ffmpeg推流一:不加驗證,失敗******************************
ffmpeg -i "rtsp://admin: admin@192.168.0.231/h264/ch1/sub/av_stream"-c:v copy -c:a copy -f flv "rtmp://127.0.0.1:8035/live/t1"
******************************ffmpeg推流二:加驗證,成功******************************
ffmpeg -i "rtsp://admin: admin@192.168.0.231/h264/ch1/sub/av_stream"-c:v copy -c:a copy -f flv"rtmp://127.0.0.1:8035/live/t1?user=abc&pass=89437589"
******************************小結******************************
若是要控制播放權限,則用on_play跳轉,方法相似。