web-dev-qa-db-ja.com

アクセス制御されたビデオストリーミング用にnginxを設定する

Meteor/nodejsに基づいた学習環境でビデオを表示することをコアとするアプリケーションを作成しようとしています。問題はストリーミング自体です。多くのページで説明されているように、ノードは静的コンテンツの提供には適していません。

だから私のアイデアは私のnginxサーバーにビデオを提供させることでした。

問題は次のとおりです。動画は公開しないでください。この動画を表示する権利を持つログインユーザーのみがアクセスできるようにする必要があります。

アプリにログインし、ビデオを表示する権限を持つユーザーのみがビデオを表示できるようにnginxを構成する方法はありますか?

最善のアプローチは何ですか?

2
Tobi

これは確かに正しいアプローチです。

auth_requestフラグを使用してnginxを再コンパイルすることにより、 --with-http_auth_request_module モジュール(デフォルトではビルドされません)を含めます。

これを使用すると、アプリケーションに送信されたサブリクエストのHTTPコードを使用して、コンテンツへのアクセスを許可または拒否できます。

基本的に、認証チェックの要求に応答し、ビデオアクセスを許可するためにHTTP 200で、またはそれを禁止するために401/403で応答するコントローラーをアプリケーションに記述します。

location /video {
    auth_request /access;
    [ ... ]
}

location = /access {
    internal;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
    proxy_pass_request_body off;
    proxy_pass http://my_server_app:port/my_controller;
}
2
Xavier Lucas