模块名称:ngx_http_secure_link_module
ngx_http_secure_link_module
模块(Nginx 0.7.18开始
)用于检查请求链接的真实性,保护资源免遭未经授权的访问,并限制链接寿命。常用于访问及文件下载的防盗链的实现。
该模块不是默认构建的,需要通过 --with-http_secure_link_module
配置参数来启用。
该模块功能的实现原理如下:
Nginx
配饰示例如下:
server {
...
location /download {
secure_link $arg_secret_valid,$arg_secret_time;
secure_link_md5 trumanwong$uri$arg_secret_time;
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 405;
}
...
}
...
}
PHP
配置示例如下:
<?php
// 密钥
$secret = 'trumanwong';
// 被保护的真实连接
$path = "/download/example.zip";
// 访问超时时间
$expire = time() + 10;
// 将访问密钥、访问路径、超时时间加密
$md5 = base64_encode(md5($secret . $path . $expire, true));
// 特殊字符“+”和“/”的处理
$md5 = strtr($md5, '+/', '-_');
// 特殊字符“=”的处理
$md5 = str_replace('=', '', $md5);
// 新的访问连接
$url = "https://trumanwl.com{$path}?secret_valid={$md5}&secret_time={$expire}";
echo '<a href="' . $url . '">example.zip</a>';
?>