kleberweb Postado Julho 18, 2021 Compartilhar Postado Julho 18, 2021 olá galera blz! estou com um dedicado para hospedar alguns vídeos e instalei o nginx no centos 7. Quero saber como melhorar a entrega dos vídeos e colocar uma segurança do tipo fazer o link expirar depois de algumas horas. no momento estou usando o link direto para transmitir tipo http://ip/video.mp4 Alguém pode min ajudar com isso ? Obrigado desde de já galera. 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Jaime Silva Postado Julho 19, 2021 Compartilhar Postado Julho 19, 2021 (editado) Existe o módulo Kaltura do Nginx para servir os vídeos em HLS e DASH sem precisar recodificá-los. Para proteção, você pode fazer uso do módulo Secure Link. Quando eu tiver um tempo, vou postar um exemplo de configuração para lhe ajudar. Você deve compilar o Nginx com os módulos assim 1) Copie o código do Github mkdir -p /usr/local/src/nginx cd /usr/local/src/nginx git clone https://github.com/kaltura/nginx-vod-module git clone https://github.com/kaltura/nginx-secure-token-module 2) Adicione estes parâmetros de configuração do Nginx: ./configure \ --add-module=/usr/local/src/nginx/nginx-secure-token-module \ --add-module=/usr/local/src/nginx/nginx-vod-module \ O exemplo a seguir, permite servir vídeos mp4 de forma segura. Estes vídeos ficam acessíveis em https://meusite.com.br/videos/alguma_coisa.mp4 location /videos { alias /home/videos; secure_link $arg_h,$arg_t; secure_link_md5 "$3Nh@Qu4Lqu3r | $uri | $secure_link_expires | $remote_addr"; secure_token "h=$arg_h&t=$arg_t"; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 410; } } Agora, no seu site, você precisa gerar o link para o vídeo de forma dinâmica, considerando o IP do visitante. Será um link único para cada visitante e que muda toda vez que a página é recarregada. $time = time() + 14400; $ip = $_SERVER['REMOTE_ADDR']; $pass = "$3Nh@Qu4Lqu3r"; $url = 'https://meusite.com.br/videos/alguma_coisa.mp4'; $link = get_secure_link($url, $pass, $time, $ip); function get_secure_link($link, $pass, $time = null, $ip = null, $ua = null) { $path = parse_url($link, PHP_URL_PATH); # Link simples, sem restrição e que nunca expira if ( $ip == null || $time == null ) { $parts = explode('/', $path, 3); $host = strstr($link, $path, true); $tmp = $parts[2] . $pass; $hash = md5($tmp); $url = $host . '/' . $parts[1] . '/' . $hash . '/' . $parts[2]; return $url; } # Link com limite de tempo e com restrição de IP $array = array($pass, $path, $time, $ip); if ($ua) $array[] = $ua; $tmp = implode(' | ', $array ); //$tmp = $time . ' | ' . $path . ' | ' . $ip . ' | ' . $ua . ' | ' . $pass; $sum = md5($tmp, true); $b64 = base64_encode($sum); $hash = str_replace(['+','/', '='], ['-','_',''], $b64); $url = $link . '?t=' . $time . '&h=' . $hash; return $url; } Para servir os vídeos em HLS ou DASH e ainda assim proteger contra acesso não autorizado, você deve fazer algumas mudanças na configuração do módulo Secure Link do Nginx, Editado Julho 20, 2021 por Jaime Silva 0 Citar Não há bem nem mal que dure para sempre. Um dia tudo acaba. Link para o comentário Compartilhar em outros sites More sharing options...
kleberweb Postado Julho 19, 2021 Autor Compartilhar Postado Julho 19, 2021 Muito mais Muito obrigado mesmo amigo por sua ajuda amigo. mais na pasta onde meus videos são hospedado estão em /usr/share/nginx/html e são varias pasta diferentes com vídeos como por exe: filmes, series e novela. então como ficaria a configuração amigo? 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Jaime Silva Postado Julho 19, 2021 Compartilhar Postado Julho 19, 2021 No código da config do Nginx acima, mude "alias /home/videos;" para "alias /usr/share/nginx/html;" Na hora de gerar o link, o caminho para o vídeo deve incluir a pasta, exemplo: Se o link é normalmente acessível em https://meusite.com.br/novelas/Imperio/Capitulo_1.mp4 Para gerar o link seguro, a URL a ser considerada é https://meusite.com.br/videos/novelas/Imperio/Capitulo_1.mp4 0 Citar Não há bem nem mal que dure para sempre. Um dia tudo acaba. Link para o comentário Compartilhar em outros sites More sharing options...
kleberweb Postado Julho 19, 2021 Autor Compartilhar Postado Julho 19, 2021 tipo tenho mais de mil vídeos então vou ter que colocar um por um na $url = 'https://meusite.com.br/videos/alguma_coisa.mp4'; ? 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Jaime Silva Postado Julho 20, 2021 Compartilhar Postado Julho 20, 2021 Sim, tem que mudar um por um. 0 Citar Não há bem nem mal que dure para sempre. Um dia tudo acaba. Link para o comentário Compartilhar em outros sites More sharing options...
msaulohenrique Postado Julho 20, 2021 Compartilhar Postado Julho 20, 2021 Pode usar $_GET tbm, vc chama o arquivo na url. 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Jaime Silva Postado Julho 20, 2021 Compartilhar Postado Julho 20, 2021 (editado) E caso faça uso da minha sugestão, lembre-se de mudar a senha $3Nh@Qu4Lqu3r para uma outra. Esta senha é usada no vhost do Nginx e também no código para gerar o link protegido. A outra dica é usar um método mais seguro de obter o IP real do visitante, se seu site estiver sob um proxy tal como o Cloudflare. Editado Julho 20, 2021 por Jaime Silva 0 Citar Não há bem nem mal que dure para sempre. Um dia tudo acaba. Link para o comentário Compartilhar em outros sites More sharing options...
kleberweb Postado Julho 22, 2021 Autor Compartilhar Postado Julho 22, 2021 não tem um modo de pegar todos os vídeos de uma pasta? colocar mais de 1 mil links um por um 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
msaulohenrique Postado Julho 26, 2021 Compartilhar Postado Julho 26, 2021 (editado) Em 20/07/2021 em 15:45, Jaime Silva disse: E caso faça uso da minha sugestão, lembre-se de mudar a senha $3Nh@Qu4Lqu3r para uma outra. Esta senha é usada no vhost do Nginx e também no código para gerar o link protegido. A outra dica é usar um método mais seguro de obter o IP real do visitante, se seu site estiver sob um proxy tal como o Cloudflare. Me referia a: $url = 'https://meusite.com.br/videos/'.$_GET["video"]; Logo ele pode usar www.site.com/arquivo.php?video=meuvideo.mp4 Editado Julho 26, 2021 por msaulohenrique 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.