Nginx http_secure_link 文件防盗链代码示例
Nginx http_secure_link 是一种防盗链技术,可以通过在访问链接中添加一个签名参数来验证访问权限。以下是一个简单的示例:
假设我们有一个图片文件 'http://example.com/images/test.jpg',我们希望只允许特定的网站访问这个文件,可以使用以下 nginx 配置:
location /images/ {
valid_referers none blocked example.com;
if ($invalid_referer) {
return 403;
}
secure_link $arg_md5,$arg_expires;
secure_link_md5 'secret$uri$remote_addr$arg_expires';
if ($secure_link = '') {
return 403;
}
if ($secure_link = '0') {
return 410;
}
expires 1h;
}
以上配置中,valid_referers 指定了允许访问的网站,如果访问来源不在白名单中,则返回 403 错误。
secure_link 指定了签名参数名,即链接中需要包含的签名参数。
secure_link_md5 指定了签名算法,其中 secret 为一个自定义的密钥,$uri 为访问的文件路径,$remote_addr 为访问者的 IP 地址,$arg_expires 为链接中的过期时间参数。
如果签名验证通过,则返回访问的文件,并设置缓存时间为 1 小时。
在访问图片文件时,我们需要在链接中添加签名参数和过期时间参数,例如:
'http://example.com/images/test.jpg?md5=3f3bf12fdff8c4f6d575e5e4a7b6f83f&expires=1627468866'
其中 md5 为签名参数,expires 为过期时间,需要根据实际情况生成。如果链接中的签名参数和过期时间不正确,则无法访问文件。
以上是一个简单的 nginx http_secure_link 防盗代码示例,可以根据实际需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/oo6u 著作权归作者所有。请勿转载和采集!