图片防盗链是为了解决防止图片被其它网站滥用的方法。

在nginx的配置中,可以使用 valid_referers 指令完成图片防盗链的配置。

语法:

valid_referers [none|blocked|server_names]

    在此之前首先说明什么是来路,来路是指访问我们网站的页面的时候得告诉我们您是从哪里来的,是从百度来的呢?还是直接在浏览器中输入地址的呢?这就是来路。

    参数它表示有效的来路,其默认值为none,以下解释各个参数的用法:

    • none:表示没有referer,一般表示直接在浏览器中输入地址打开图片的。配置了它表示可以直接在浏览器中打开图片而不被阻止。
    • blocked:表示有referer但是被防火墙或者是代理给去除了,这些值是不以“http://” 或 “https://” 开头的字符串;
    • server_names: 服务器名称,域名列表,也就是白名单。

    配置完成valid_referers指令后,会将结果传递给一个 $invalid_referer变量,如果它和上面的其中任意一个条件都匹配则$invalid_referer值为0,否则将被阻止访问。

    例子:

    location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {
        valid_referers none blocked *.yxjc123.com;
        if ($invalid_referer) {
            return 403;
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    当我们在其它的网站引用我们的图片地址的时候。
    <img src="https://www.yxjc123.com/uploads/image/202304/20230410155638_54294.png">
      效果如下:

      nginx 配置图片防盗链

      破解nginx防盗链配置

      一般的服务器防盗链都会配置来源为空的情况下是可以打开图片的,即直接在浏览器中输入地址是可以访问的,所以这也是一个bug。

      所以我们只需要把图片的属性配置为没有来路即可。

      <img referrerPolicy="no-referrer" src="xxx.jpg"/>