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其中的实际数据(在这种情况下视频)是在另一台服务器上?