如何使用 nginx 对 URL 的一部分进行编码

如何使用 nginx 对 URL 的一部分进行编码

我的网站上有一个下载部分,目前我按照以下方案向访问者提供下载链接:

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中实现一个执行解密操作的脚本。

但是,这里更大的问题是,您通过对实际路径进行哈希处理来“加密”。哈希处理是单向操作。您无法根据哈希值计算出原始值。

相关内容