我尝试实施此模块以保护文件下载免受热链接影响并限制带宽窃取:ngx_http_secure_link_module
我收到403错误。我认为错误是PHP代码中的某个地方。
/etc/nginx/conf.d/default.conf
<?php
$my_con=mysql_connect('localhost','root','');
mysql_select_db('test');
$getid = $_GET('id');
if(isset($getid)){
$id = $getid;
$db_query = mysql_query("select * from 'image' where id='$id'");
while($row = mysql_fetch_row($db_query)){
$imageData = $row['image'];
}
header("content-type: image");
}
else{
echo "Error!";
}
?>
PHP
location /downloads/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}
答案 0 :(得分:0)
以下步骤错误
<强> PHP 强>
$md5 = base64url_encode(md5( "secret" . $expires . $file . $_SERVER['REMOTE_ADDR'] ));
$download_link = "http://example.com".$file."?md5=".$md5."&expires=".$expires;
nginx config
location /downloads/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 secret$arg_expires$uri$remote_addr;
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}
请看我的问题。我在模块中有一个比这更大的问题。这在节点js中适用于我。我用PHP测试了我的代码。我还没有测试过你的。但我想它会起作用;)