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