2017-09-26 6 views
1

nginxで安全なリンクを取得して、別のサーバーでデータを取得する必要があります。Nginx secure_linkを使用してリモートサーバーからストリームを送信する方法

次のように私はnginxののsecure_linkで1つのサーバー・セットアップを使用しています:

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

URLを構築するためにPHPを使用しました。

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を使ってそのリモートサーバからストリームしようとすると(当然のことながら、PHP部分が正しい$ baseUrlとpathで更新されます)、動作しません。

実際のデータ(ここではビデオ)が別のサーバーにある場合、secure_linkを使用する方法はありますか?

答えて

関連する問題