我正试图在一个ubuntu服务器上设置一个过期的NGINX安全链接。下面是我目前使用的NGINX配置和PHP代码。
location /files {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr enigma";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}以下是PHP代码
$domain = 'mydomain.com';
$uri = urldecode('/files/test.pdf');
$ip = $_SERVER['REMOTE_ADDR'];
$secure_text = ' enigma';
function getSecureHash($ip, $uri, $secure_text, $expires){
$str = $expires.$uri.$ip.$secure_text;
$tmp = md5( $str, true );
$tmp = base64_encode( $tmp );
return str_replace( array('+', '/', '='), array('-', '_', ''), $tmp );
}
$url = "$domain$uri?md5=".getSecureHash($ip, $uri, $secure_text, $expires)."&expires=$expires";
echo $ip;
echo "</br>";
echo "</br>";
echo "</br>";
echo $url;有了这个代码,我总是被禁止使用403。但是,当我从NGINX和PHP中删除IP时,它可以工作,但我希望创建一个基于IP的唯一链接。
如有任何指导,将不胜感激。
我在跟踪此链接
发布于 2022-11-19 18:43:54
如果您在CF缓存下,请尝试
if(isset($_SERVER'HTTP_CF_CONNECTING_IP')){$ip =$_SERVER‘’HTTP_CF_CONNECTING_ip‘;}{$ip=$_SERVER’‘REMOTE_ADDR’;}
https://stackoverflow.com/questions/74459333
复制相似问题