Échec de NGINX open () (20: Pas un répertoire) hls vod avec module de liaison sécurisée

14

J'ai un problème avec la configuration de nginx pour le streaming hls. J'utilise le module vod kaltura nginx et j'essaye d'ajouter ngx_http_secure_link_modulepour protéger le flux. La chose étrange est que j'ai une erreur 404 si j'active ngx_http_secure_link_module(journaux ci-dessous). Je pense que c'est parce qu'il ne peut pas trouver un fichier avec index.m3u8 à la fin, mais si je commente le bloc de lien sécurisé, cela fonctionne bien.

J'ai également essayé d'ajouter un alias dans le location ~ \.m3u8$ {}bloc, mais cela n'a pas fonctionné. Qu'est-ce que je fais mal? Comment protéger mon stream?

Mon lien de flux: https://stream.example.com/hls/c14de868-3130-426a-a0cc-7ff6590e9a1f/index.m3u8?md5=0eNJ3SpBd87NGFF6Hw_zMQ&expires=1609448340

Ma configuration NGINX:

server {
  listen 9000;
  server_name localhost;
  # root /srv/static;

  location ^~ /hls/ {
    # the path to c14de868-3130-426a-a0cc-7ff6590e9a1f file
    alias /srv/static/videos/1/;
    # file with cors settings
    include cors.conf;

    vod hls;

    # 1. Set secret variable
    set $secret "s3cr3t";

    # 2. Set secure link
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires $secret";

    # if I comment this block everything works fine (but security)
    location ~ \.m3u8$ {
      if ($secure_link = "") { return 403; }
      if ($secure_link = "0") { return 403; }
    }
  }
}

Journaux NGINX:

cmdlogs

Klimbo
la source

Réponses:

1

Juste déplacé ce bloc vers le répertoire du serveur et ajouté à l' vod hls;intérieur.

location ~ \.m3u8$ {
  include cors.conf;
  vod hls;

  if ($secure_link = "") { return 403; }
  if ($secure_link = "0") { return 403; }
}
Klimbo
la source