如何给不属于自己的网站资源创建防盗链

最近在给自己的博客修改一系列的安全问题,比如说什么外链跳转啊,评论之类的,然后呢,顺道就想整一下这个防盗链,我的博客的图片都是放在了杜老师的图床上面,访问速度还是很不错的,有需要可以去看一下去不图床
那么问题来了,杜老师的图床不支持设置防盗链,我应该怎么去实现呢,让杜老师改肯定是不现实的,所以我就想到了反代一下杜老师的图床,我在反代的网站上开启防盗链,间接的实现防盗链,那么呢这个方案就出现了一个问题(防君子不防小人)。

Nginx设置

我们首先呢需要创建一个自己的静态网站,比如说我的就是img.byer.top,打开网站的Nginx设置,在server或者伪静态中添加如下内容

location ~ .*\.(png|jpg|jpeg|webp)$ {
    //这行配置指定了一个匹配规则,只有请求的 URL 结尾是 .png、.jpg、.jpeg 或 .webp 的时候,这个 location 块的配置才会生效。
    expires 30d; 
    //这行配置设置了 HTTP 的 Expires 头,使得浏览器和代理服务器可以缓存这些资源 30 天。
    log_not_found off; 
    //这行配置关闭了对于这些资源的 404 错误日志记录。
    valid_referers none img.byer.top byer.top localhost; 
    //这行配置设置了有效的引用者,只有来自 img.byer.top、byer.top 和 localhost 的请求或者没有 Referer 头的请求才被视为有效。
    if ($invalid_referer) {
        return 404; 
        access_log off; 
    }
    //这段配置检查请求是否来自无效的引用者,如果是,就返回 404 错误,并关闭访问日志。
    return 301 https://bu.dusays.com$request_uri; 
    //这行配置将所有符合条件的请求301重定向到 https://bu.dusays.com,并保持原始的请求路径。这是一个反向代理的设置,用于将流量转发到源站。
}

以下就是两张照片,一张经过了反代,令一张没有,你可以自己发在自己网站的评论区测试一下是否生效
https://bu.dusays.com/2023/12/31/6590520fd4ae3.webp
反代前的图片
https://bu.dusays.com/2023/12/31/6590520fd4ae3.webp
反代后的图片