Nginx Http_secure_link 是一种用于保护静态文件的链接签名机制。它会将链接中的参数与文件路径进行加密,以防止未经授权的用户访问文件。

以下是一个使用 nginx http_secure_link 编写的文件防盗代码:

  1. 在 nginx.conf 文件中添加以下配置:
location /secure/ {
   # 设置静态文件路径
   alias /var/www/secure/;
   # 禁止直接访问文件,只能通过签名链接访问
   deny all;
   # 获取签名链接
   secure_link $arg_md5,$arg_expires;
   secure_link_md5 'secret$uri$remote_addr$arg_expires';
   # 根据签名链接验证文件合法性
   if ($secure_link = '') {
      return 403;
   }
   # 设置文件过期时间
   if ($secure_link_expires < $date_gmt) {
      return 403;
   }
   # 允许访问文件
   if ($secure_link = '0') {
      break;
   }
}
  1. 在需要保护的文件链接中添加签名参数:
http://example.com/secure/file.png?md5=xxxxxx&expires=xxxxxx

其中,md5 参数是由服务器端生成的签名字符串,expires 参数是指定链接过期时间的时间戳。

  1. 在服务器端生成签名字符串的代码:
$uri = '/secure/file.png';
$secret = 'secret';
$remote_addr = $_SERVER['REMOTE_ADDR'];
$expires = time() + 3600; // 设置链接有效期为 1 小时
$md5 = md5('$secret$uri$remote_addr$expires');
$link = 'http://example.com$uri?md5=$md5&expires=$expires';

以上代码会生成一个有效期为 1 小时的链接,只有带有正确签名参数的链接才能访问文件。如果链接过期或签名不正确,则会返回 403 禁止访问。

Nginx Http_secure_link 防盗链配置教程:保护静态文件安全

原文地址: https://www.cveoy.top/t/topic/oo6s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录