nginx ngx_http_secure_link_module和php视频流

时间:2016-03-25 22:47:02

标签: php nginx streaming mp4

我有几个小时试图理解并弄清楚它是如何工作的,并经过搜索和尝试了很多,但仍然......我头上没有留下头发:(

试用和错误的来源 http://nginx.org/en/docs/http/ngx_http_secure_link_module.html#variables Secure pseudo-streaming flv files Nginx secure link module not working with php files but working on static files nginx HttpSecureLinkModule php example

问题是如何让Nginx和php制作定时加密链接来播放视频?

最终输出看起来像

http://domain.tld/videos/529d86c4ff560cb559df7eb794aeb4b1/56f5bec4/5/4/d/f/e/54dfee5c43e6e.mp4

此视频的真实路径是

/var/www/domain.tld/media/videos/5/4/d/f/e/54dfee5c43e6e.mp4

如果可行的话,应该保持不变的php片段,因为它会不时地从开发者那里更新。

//generate lighttpd hash
function getMediaLink($filename) {
  global $modsec_secret; // example: s3cr3tk3y (from your lighttpd config)
  global $modsec_url; // example: http://media.asfd.com/dl/ with trailing slash
  $filename = rawurldecode($filename);
  $f = "/".$filename;
  $t = time();
  $t_hex = sprintf("%08x", $t);
  $m = md5($modsec_secret.$f.$t_hex);
  $link = $modsec_url.$m.'/'.$t_hex.$f;
  return $link;
}

对于NginX配置文件,我有这个头:

    server {
        listen       80; # http2;
        server_name  localhost;
            index  index.php index.html index.htm;

        #charset koi8-r;
        access_log  /var/log/nginx/access.log  main;
        root   /var/www/domain.tld;

        location / {

..... (the latest attempt)

     location /videos/ {
        secure_link $arg_st,$arg_e;
        secure_link_md5 "secret$uri$arg_e";

        root /var/www/domain.tld/media/videos; #physical real path
        if ($secure_link = "") {
                return 403;
        }
        if ($secure_link = 0) {
                return 410;
        }
    }

有人可以试着告诉我如何实现这一目标,但也许更重要的是,为什么,在激情中让我了解如何以及为什么?

0 个答案:

没有答案