宝塔Nginx利用Secure Link进行文件资源防盗链采集

如果你服务器的文件或者其他一些资源不想被别人盗用,可以给资源链接上加一个key和时效,当时效过了,那么这个链接也就时效了,这样可以有效的防止别人调用你的资源。

nginx安装模块

查看nginx模块是否存在http_secure_link_module

[root@VM-0-8-centos /]#   /www/server/nginx/sbin/nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module

/www/server/nginx/src/下执行命令配置命令参数–with-http_secure_link_module

./configure  --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-http_secure_link_module

编译

make
         objs/nginx.8
make[1]: Leaving directory `/www/server/nginx/src'

备份原来的nginx

cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.bak

替换原来的nginx

cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/nginx

重启后查看nginx是否已存在该模块

/www/server/nginx/sbin/nginx -V
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-http_secure_link_modul

重启nginx遇到如下提示:/bin/sh: /usr/bin/nginx: Permission denied ,需要放开权限

nginx配置

    location /m3u8 { #这里的/m3u8是要保护的路径
      secure_link $arg_key,$arg_e;
      secure_link_md5 vlwx$uri$arg_e; #vlwx是密钥,可以自行修改
        
      if ($secure_link = "") {
        return 403;  # 密钥无效
      }
      if ($secure_link = "0") {
        return 410;  # 链接过期
      }
    }

php生成加密链接

<?php
$uri = "/test.m3u8";  // 文件路径
$expires = time() + 7200;        // 设置链接有效期(比如一小时后过期)
$secret = "vlwx";     // 必须与 Nginx 配置中的密钥相同

$key = base64_encode(md5($secret . $uri . $expires, true));
$key = strtr($md5, '+/', '-_');
$key = str_replace('=', '', $md5);

$url = "http://vlwx.com$uri?key=$key&e=$expires";

echo $url;
?>

这里不知道为什么直接用md5生成的密钥过不去NG的验证,可能是环境版本问题,所以这里用base64来生成key

给TA打赏
共{{data.count}}人
人已打赏
技术文档

大白菜PE工具重装系统删除预装流氓软件

2024-5-13 16:14:56

技术文档

在GitHub上发布一个静态页面

2021-11-27 23:05:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索