Я пытаюсь создать приложение, ядро которого будет показывать видео в учебной среде на основе meteor / nodejs. Проблема в самой потоковой передаче. Как описано на многих страницах, узел не подходит для обслуживания статического контента.
Итак, моя идея заключалась в том, чтобы мой сервер nginx обслуживал видео.
Проблема в следующем: видео не должны быть общедоступными, они должны быть доступны только зарегистрированному пользователю, который имеет право просматривать это видео.
Есть ли способ настроить nginx, чтобы разрешить просмотр видео только пользователям, которые вошли в мое приложение и имеют права на просмотр видео?
Какой подход лучше?
Это действительно правильный подход.
Включите 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;
}