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

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

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

Nginx rtmp-moduleへのストリーミング受付をパスワード認証させる

配信時直リンクを避けるSecurelink機能を利用する。

Streaming with nginx-rtmp-module Secure links

再生時はbasic認証にてホームページパスワードをかける。

Debian nginxでパスワード認証

phpにパスワードをかけたい

nginxだとphp scriptファイルにbasci認証がかからないんで すけどー

この時に問題になるのが、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);
}

ストリーミング受付をパスワード認証させる方法はちら

Nginx rtmp-moduleへのストリーミング受付をパスワード認証させる

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;
   }
}