![如何使用 nginx 对 URL 的一部分进行编码](https://linux22.com/image/732721/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20nginx%20%E5%AF%B9%20URL%20%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A0%81.png)
我的网站上有一个下载部分,目前我按照以下方案向访问者提供下载链接:
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中实现一个执行解密操作的脚本。
但是,这里更大的问题是,您通过对实际路径进行哈希处理来“加密”。哈希处理是单向操作。您无法根据哈希值计算出原始值。