Configure nginx para transmissão de vídeo controlada por acesso

1

Estou tentando criar um aplicativo que seja essencial para mostrar vídeos em um ambiente de aprendizado baseado em meteor / nodejs. O problema é o streaming em si. Conforme descrito em muitas páginas, o nó não é bom para servir conteúdo estático.

Então minha ideia foi deixar meu servidor nginx veicular o vídeo.

O problema é: os vídeos não devem ser públicos, devem estar acessíveis apenas a um usuário conectado que tenha o direito de ver este vídeo.

Existe alguma maneira de configurar o nginx para permitir que apenas os usuários que efetuaram login no meu aplicativo e tenham os direitos para visualizar um vídeo visualizem o vídeo?

Qual é a melhor abordagem?

    
por Tobi 15.11.2014 / 16:04

1 resposta

1

Esta é realmente a abordagem correta.

Inclua o módulo auth_request (não criado por padrão) recompilando nginx com --with-http_auth_request_module bandeira.

Com ele, você poderá conceder ou negar acesso ao conteúdo usando o código HTTP de uma sub-solicitação enviada para seu aplicativo.

Basicamente, você escreverá um controlador em seu aplicativo respondendo a solicitações de verificação de autenticação e respondendo com um HTTP 200 para permitir acesso a vídeo ou com 401 / 403 para proibi-lo.

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;
}
    
por 15.11.2014 / 16:56