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 防盗代码示例,可以根据实际需求进行修改和扩展。

Nginx http_secure_link 文件防盗链代码示例

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

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