NGINX open()失败(20:不是目录)带有安全链接模块的hls vod

问题描述 投票:13回答:1

我对用于hls流的nginx配置有问题。我使用kaltura nginx vod module并尝试添加ngx_http_secure_link_module以保护流。奇怪的是,如果启用ngx_http_secure_link_module,则会出现404错误(下面的日志)。我认为这是因为它最后找不到带有index.m3u8的文件,但是如果我评论安全链接块,它就可以正常工作。

[我也尝试在location ~ \.m3u8$ {}块内添加别名,但是没有用。 我在做什么错?如何保护我的信息流?

我的流链接:https://stream.example.com/hls/c14de868-3130-426a-a0cc-7ff6590e9a1f/index.m3u8?md5=0eNJ3SpBd87NGFF6Hw_zMQ&expires=1609448340

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

NGINX日志:

cmdlogs

nginx video-streaming http-live-streaming kaltura vod
1个回答
0
投票

仅将此块移出到服务器目录,并在其中添加了vod hls;

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

  if ($secure_link = "") { return 403; }
  if ($secure_link = "0") { return 403; }
}
© www.soinside.com 2019 - 2024. All rights reserved.