NGINX open () fehlgeschlagen (20: Kein Verzeichnis) hls vod mit Secure Link-Modul

14

Ich habe ein Problem mit der nginx-Konfiguration für hls-Streaming. Ich benutze kaltura nginx vod module und versuche hinzuzufügen ngx_http_secure_link_module, um den stream zu schützen. Das Seltsame ist, dass ich 404 Fehler habe, wenn ich aktiviere ngx_http_secure_link_module(Protokolle unten). Ich denke, das liegt daran, dass es am Ende keine Datei mit index.m3u8 finden kann, aber wenn ich den Block für sichere Links kommentiere, funktioniert es einwandfrei.

Ich habe auch versucht, einen Alias ​​innerhalb des location ~ \.m3u8$ {}Blocks hinzuzufügen , aber es hat nicht funktioniert. Was mache ich falsch? Wie schütze ich meinen Stream?

Mein Stream-Link: https://stream.example.com/hls/c14de868-3130-426a-a0cc-7ff6590e9a1f/index.m3u8?md5=0eNJ3SpBd87NGFF6Hw_zMQ&expires=1609448340

Meine NGINX-Konfiguration:

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

NGINX-Protokolle:

cmdlogs

Klimbo
quelle

Antworten:

1

Verschob diesen Block einfach in das Serververzeichnis und fügte ihn hinzu vod hls;.

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

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