2017-09-26 82 views
1

我需要在nginx工作环境中获得安全链接,其中我获得了另一台服务器上的数据。如何使用Nginx secure_link从远程服务器进行流式传输

我使用nginx的secure_link一个服务器设置如下:

location ~ \.mp4$ { 

secure_link $arg_md5,$arg_expires; 
secure_link_md5 "$secure_link_expires$uri$remote_addr secretkey"; 

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

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

使用PHP构建的URL。

function buildSecureLink($baseUrl, $path, $secret, $ttl, $userIp) 
{ 
    $expires = time() + $ttl; 
    $md5 = md5("$expires$path$userIp $secret", true); 
    $md5 = base64_encode($md5); 
    $md5 = strtr($md5, '+/', '-_'); 
    $md5 = str_replace('=', '', $md5); 
    return $baseUrl . $path . '?md5=' . $md5 . '&expires=' . $expires; 
} 
      $secret = 'secretkey'; 
$baseUrl = 'domain here'; 
$path = '/videos' . $video->id . '.mp4'; 
$ttl = 3600; 
$userIp = $_SERVER["HTTP_CF_CONNECTING_IP"]; // since behind cloudflare 
$vidurl = buildSecureLink($baseUrl, $path, $secret, $ttl, $userIp); 

当数据在同一台服务器上时,这种方式很好。但是,如果我尝试使用nginx中的相同设置的secure_link从该远程服务器进行流式处理(自然,使用正确的$ baseUrl和路径更新PHP部分),它根本行不通。

有什么办法可以使用secure_link其中的实际数据(在这种情况下视频)是在另一台服务器上?

回答

相关问题