我的网站上有一个下载部分,目前我按照以下方案向访问者提供下载链接:
https://example.com/somerandomtext/file.zip
我想在 php 级别加密 url 以便:
https://example.com/encrypted_somerandomtext/file.zip
并使用proxy_pass解密到nginx上。
我用来加密该部分的代码somerandomtext
是:
<?php
function buildSecureLink($path, $secret)
{
$md5 = md5(" $secret", true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
return $md5;
}
$secret = 'the_secret_key_configured_in_nginx';
$path = 'SJTjYD4vJATWDsHtQLx6WsnH1aNYt2PxRL9t3hZ47X';
echo buildSecureLink($path, $secret);
?>
如何让 nginx 解密并将部分代理到正确的 url?
谢谢。
答案1
您可以尝试在Lua中实现一个执行解密操作的脚本。
但是,这里更大的问题是,您通过对实际路径进行哈希处理来“加密”。哈希处理是单向操作。您无法根据哈希值计算出原始值。