51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

盗链是什么意思?nginx 配置防盗链

配置防盗链、以及跨域访问

先来说说什么是盗链吧

简单的理解就是 比如我的网站有很多精美的图, 但是很多个人站长通过爬虫或者手动的 把我的图片连接放到他们自己的文章中引用,

这样做的好处,他们的网站访问的图片 对他们网站没有压力,但是会对我的网站造成压力, 但是对我的网站一点也没有好处。

为了避免这些我们需要

防止资源盗链 {#title-8}

防盗链,指的是防止资源被其他网站恶意盗用。

基础防盗链设置思路:主要是针对客户端请求过程中所携带的一些Header信息来验证请求的合法性,比如客户端在请求的过程中都会携带referer信息。优点是规则简单,配置和使用都很方便,缺点是防盗链所依赖的Referer验证信息是可以伪造的,所以通过referer信息防盗链并非100%可靠,但是他能够限制大部分的盗链情况。

|------------------------| | 在盗链服务器上准备html文件,偷取我的图片 |

<html>
<head>
    <meta charset="utf-8">
    <title>baimei.com</title>
</head>
<body style="background-color:pink;">
    <center><img src="https://web.baimei.com/daolian.jpg"/></center>
</body>
</html>

访问页面查看 可以看到一张图片。

服务器上配置防盗链

location ~ .*\.(jpg|png|gif) {
root /var/www/wordpress/wp-content/extra/;
valid_referers none blocked *.baimei.com, *.baidu.com;
if ( $invalid_referer ) {
return 403;
}
}

以上配置含义表示,所有来自*.baimei.com都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403个客户,这样用户便会看到一个403的页面

|---------------------------------------------| | 如果不使用return而是用rewrite,那么盗链图片会返回一个pei.jpg给用户 |

#防盗链demo
location ~ .*\.(jpg|png|gif) {
            root /var/www/wordpress/wp-content/extra/;
            valid_referers none blocked *.baimei.com;
            if ( $invalid_referer ) {
                rewrite ^(.*)$ /Picture/daolian1.gif break;
            }
}

|--------------| | 如果希望某些网站可以盗链 |

location ~ .*\.(jpg|png|gif) {
    root /data;
    valid_referers none blocked *.baimei.com server_name ~\.google\. ~\.baidu\.;
    if ( $invalid_referer ) {
        return 403;
    }   
}

|----------------------------------------------| | 当然这种防护并不能百分百保证资源不被盗链,因为我们可以通过命令来修改来源的refer信息 |

#伪造协议头访问
[root@web01 code]# curl -e "https://www.baidu.com" -I http://test.baimei.com/Picture/daolian.jpg
HTTP/1.1 403 Forbidden
Server: nginx
Date: Thu, 10 Oct 2019 09:01:05 GMT
Content-Type: text/html; charset=utf-8,gbk
Content-Length: 162
Connection: keep-alive

#伪造协议头访问
[root@web01 code]# curl -e "https://www.baimei.com" -I http://test.baimei.com/Picture/daolian.jpg
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 10 Oct 2019 09:01:35 GMT
Content-Type: image/jpeg
Content-Length: 556417
Last-Modified: Thu, 10 Oct 2019 07:14:19 GMT
Connection: keep-alive
ETag: "5d9eda4b-87d81"
Accept-Ranges: bytes

模拟盗链实例 {#title-9}

|---------| | 配置被盗链机器 |

10.0.0.8  static.baimei.com
#1.配置Nginx
[root@web02 conf.d]# cat static.conf 
server {
    listen 80;
    server_name static.baimei.com;
    root /code;

    location / {
        index index.html;
    }
}

#2.上传2张图片
    一张是可以被盗链的图片
    一张是广告位的图片

#3.重启服务器
[root@web02 code]# systemctl restart nginx

|---------| | 另一台机器盗链 |

10.0.0.7  dl.baimei.com  ###盗链服务器
#1.配置Nginx
[root@web01 conf.d]# cat try.conf
server {
    server_name dl.baimei.com;
    listen 80;
    root /code;
    location / {
        index index.html;
    }
}

#2.配置盗链的页面
[root@web01 code]# cat /code/tt.html
<html>
<head>
    <meta charset="utf-8">
    <title>baimeidashu.com</title>
</head>
<body style="background-color:pink;">
    <img src="http://static.baimei.com/daolian.jpg"/>   #根据情况修改你的服务器地址
</body>
</html>

|-------| | 添加防盗链 |

location ~* \.(gif|jpg|png|bmp)$ {
    valid_referers none blocked *.baimei.com;
    if ($invalid_referer) {
        return 403;                         #可以选择直接返回403
        rewrite ^(.*)$ /daolian.png break;      #也可以选择返回一张水印的图片,给公司做广告
}
赞(7)
未经允许不得转载:工具盒子 » 盗链是什么意思?nginx 配置防盗链