Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Postado

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.


Postado (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 por Jaime Silva

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Postado

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?

Postado

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

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Postado (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 por Jaime Silva

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Postado (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 por msaulohenrique

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.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?

-