Пытаюсь настроить http_secure_link. Наиболее упрощенный тест:
location ~ \.mp4$ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "test";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;
}
function buildSecureLink($url)
{
$ttl = 10000;
$expires = time() + $ttl;
$md5 = md5("test", true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
if(strpos($url, '?') !== false)
{
return $url . '&md5=' . $md5 . '&expires=' . $expires;
}
return $url . '?md5=' . $md5 . '&expires=' . $expires;
}
возвращает 403-ый отклик. Прихожу к выводу, что php и nginx создают разный md5. В чём причина? Я запрашиваю
echo -n 'test' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
И получаю тот же хеш, что содержится в url. Код совпадает и должен работать корректно
1. Почему не работает?
2. Как можно провести отладку?
3. Есть ли способ увидеть реальное значение хеш-параметра, с которым сравнивается get-параметр?