@karpo518

Не работает http_secure_link. В чём причина?

Пытаюсь настроить 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-параметр?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы