nginx rtmp может читать m3u8, но не ts файлы - PullRequest
0 голосов
/ 26 сентября 2019

Я транслирую в прямом эфире, используя clappr с источником www.domain.com/hls/mystream.m3u8?md5=XXXXXXXX&expiry=1345950505

Я хочу защитить свой источник потока.поэтому я решил использовать защищенную ссылку nginx-rtmp.

я сделал часть карты для защиты файлов m3u8 и ts.он может прочитать m3u8, но для файла ts продолжайте давать мне код ошибки 403.я уже пробовал минимум медведя хэширования секретного ключа истечения срока действия + '' +.но потоковое вещание все еще нельзя наблюдать.

кто-нибудь может указать, где моя ошибка?

Я пытался следовать этому руководству https://www.nginx.com/blog/securing-urls-secure-link-module-nginx-plus/#secure_link

worker_processes  auto;

error_log  logs/rtmp_error.log debug;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {

    map $uri $filename {
      default none;
      "~*/hls/(?<name>.*).m3u8" $name;
      "~*/hls/(?<name>.*).ts" $name;
    }

    server {
        listen       80;
        server_name  localhost;

        location /hls {
            root /tmp;
            secure_link $arg_md5,$arg_expires;
            secure_link_md5 "$arg_expires secretkey";

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

            # Serve HLS fragments

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }


            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            add_header Cache-Control no-cache;
        }
    }
}

rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;

rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                notify_method get;

                application hls {
                        live on;
                        interleave on;
                        wait_key on;
                        meta copy;
                        hls on;
                        hls_fragment 2;
                        hls_playlist_length 4s;
                        hls_path /tmp/hls;
                        record off;
        }
    }

}
...