nginx-rtmp加入權限驗證的簡單方法

nginx-rtmp-module默認不限制推流權限、播放權限。若是想加入權限驗證,有不少種方法。html

 

方法一:修改源碼如:nginx

如何給 nginx rtmp 服務加入鑑權機制git

http://blog.csdn.net/cui918/article/details/53540397github

 

方法二:修改nginx配置如:web

nginx-rtmp-module 權限控制app

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跳轉,方法相似。

相關文章
相關標籤/搜索