Nginxでbasic認証したrtmpライブストリーミングwebページ の作成

本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^

Nginxで映像配信したい。RTMP配信でWeb Playerを利用する。

エンコーダから、配信サーバに向けてエンコードする際には、ストリーム名にユーザ名・パスワードを忍ばせる事ができるようにし、これに合致しないと送信できないようにする。
https://www.techlive.tokyo/archives/1334

配信時直リンクを避けるSecurelink機能を利用する。
https://www.techlive.tokyo/archives/1351

再生時はbasic認証にてホームページパスワードをかける。
https://www.techlive.tokyo/archives/1290

phpにパスワードをかけたい
https://www.techlive.tokyo/archives/1414

この時に問題になるのが、basic認証にてphpまで認証できるようにするとその認証場所によって、エンコーダから、配信サーバへのストリーム名の認証で利用するphpファイルにもbasic認証が必要となり、エンコードができなくなってしまう。(on_publish で利用する auth.phpも認証がかかってしまい正常に配信できなくなる)

回避方法

1.auth.phpは、専用のディレクトリに配置。認証はかけない。

/usr/local/nginx/html/publishauth$ ls
auth.php

引数がない時は File not foundを表示

//check if querystrings exist or not
if(empty($_GET['user']) || empty($_GET['pass']))
{
   //no querystrings or wrong syntax
   echo "File not found.";
   header('HTTP/1.0 404 Not Found');
   exit(1);
}

ストリーミング受付をパスワード認証させる方法はちら
https://www.techlive.tokyo/archives/1334

2.ベーシック認証は映像配信用のwebプレーヤを配置するディレクトリのみにかける

location /live/ {
   auth_basic "Hanako Bassic Test";
   auth_basic_user_file "/usr/local/nginx/passwd/.htpasswd";
   location ~ \.php$ {
      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
   }
}

 

タイトルとURLをコピーしました