nginx网站对图片做防盗链

第一种方法是利用Referer头来判断是否是合法请求

#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
    expires      30d;
    access_log /dev/null;
    valid_referers none blocked www.safeidc.cn safeidc.cn;
    if ($invalid_referer){
       #return 403;  #直接提示拒绝访问
    }
}
#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
    expires      30d;
    access_log /dev/null;
    valid_referers none blocked www.safeidc.cn safeidc.cn;
    if ($invalid_referer){
      rewrite ^/ https://www.safeidc.cn/wp-content/uploads/2020/12/safeidc_logo.png;  #返回特定的图片
       #return 404;
    }
}

参数说明:
none 代表请求的 refer 为空,也就是直接访问,比如在浏览器中直接访问图片 www.safeidc.cn/test1.png,直接访问时,refer 会为空。
blocked refer 来源不为空
server_names refer 来源包含当前的 server_names 即 location 的父节点 server 节点的 server_name 的值。
字符串 定义服务器名称,比如 *.safeidc.cn,配置后,来源是从 safeidc.cn 就会被认为是合法的请求。
正则表达式 匹配合法请求来源, 如 ~.safeidc.
当请求的 refer 是合法的,即可以被后面任一参数所匹配, $invalid_referer 的值为0, 若不匹配则值为 1, 进入 if 的代码中。我这里的设置是,如果是不合法的请求,就统一返回一张图片,也可以直接返回 403

原创文章,作者:Safeidc,如若转载,请注明出处:https://www.safeidc.cn/545.html

本站不销售、不代购、不提供任何支持,仅分享网络信息,请自行辨别,请遵纪守法、文明上网。