【问题标题】:NGINX open() failed (20: Not a directory) hls vod with secure link moduleNGINX open() 失败(20:不是目录)带有安全链接模块的 hls vod
【发布时间】:2023-03-16 21:30:01
【问题描述】:

我对 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 日志:

【问题讨论】:

    标签: nginx video-streaming http-live-streaming kaltura vod


    【解决方案1】:

    刚刚将此块移出到服务器目录并在里面添加了vod hls;

    location ~ \.m3u8$ {
      include cors.conf;
      vod hls;
    
      if ($secure_link = "") { return 403; }
      if ($secure_link = "0") { return 403; }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2017-12-05
      • 2018-10-05
      • 2013-07-14
      相关资源
      最近更新 更多