Nginx实战案例-- 防盗链的实现

一、什么是防盗链

对于图片来说,A网站,如果想使用B网站的图片,可以直接写上B网站图片的链接地址,或>者将B网站的图片通过右键另存为的方式下载到本地,然后在页面上使用。如果B网站不想A>网站这么干了,那么B网站可以采取防盗链的措施来干这个工作,结果就是,A网站想请求所
需要的资源,通过url的方式,获取的可能不是原来的图片了,出现404或者别的图片替代了
。如果通过浏览器直接打开图片url,那么仍然有可能显示404,这就是防盗链。

二、nginx实现防盗链

本实验需要两台nginx服务器:

虚拟机名称 ip 作用
server1 172.25.63.1 服务器
server2 172.25.63.2 盗链服务器

客户端:物理机

1.编辑nginx服务器server1:

在server1:

[root@server1 conf]# vim nginx.conf
新增一个server:
138 server {
139         listen 80;
140         server_name www.westos.org;
141         location / {
142                 root   /web;
143                 index  index.html;
144 }
145 }

2.加入测试文件并重新加载服务

在server1:

[root@server1 etc]# cd /web/
[root@server1 web]# ls
1.jpg  index.html                                       #放入一张测试图片
[root@server1 web]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 web]# nginx -s reload

此时server2想要盗链server1的内容:
3.配置服务器server2

在server2:

[root@server2 conf]# vim nginx.conf
新增一个server:
118         server {
119                 listen 80;
120                 server_name daolian.westos.org;
121                 charset utf-8;  #不加这个参数网页上看到的汉字是乱码
122
123                 location / {
124                         root /web;
125                         index index.html;
126                 }
127         }

建立发布目录以及发布文件:

[root@server2 conf]# cd /web/
[root@server2 web]# vim index.html
[root@server2 web]# cat index.html 
<html>

<body>
<br>盗链图片</br>
<img src="http://www.westos.org/1.jpg">

</body>

</html>

此时需要在server2做www.westos.org地址的解析:

[root@server2 web]# vim /etc/hosts
[root@server2 web]# cat /etc/hosts
172.25.63.1     server1 www.westos.org

之后启动nginx:

[root@server2 web]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server2 web]# nginx

4.在客户端做解析

[root@foundation63 kiosk]# vim /etc/hosts
[root@foundation63 kiosk]# cat /etc/hosts
加入:
172.25.63.2 daolian.westos.org

此时就实现了server2对server1的盗链:

在这里插入图片描述

5.在server1配置防盗链规则

在server1想要防盗链的server中新增一个location即可:

[root@server1 conf]# vim nginx.conf
新增一个location:

138 server {
139         listen 80;
140         server_name www.westos.org;
141         location / {
142                 root   /web;
143                 index  index.html;
144         }
145         location ~* \.(gif|jpg|png|jpeg)$ {
146                 root /web;
147                 valid_referers none blocked www.westos.org;
148                 if ($invalid_referer) {
149                         return 403;
150                 }
151         }
152 }
                                    

之后重新加载nginx:

[root@server1 conf]# nginx -t 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload

6.防盗测试

此时,在使用客户端访问盗链服务器server2时:
在这里插入图片描述说明图片被经过了防盗处理,但此时通过server1访问该图片可以正常访问:
在这里插入图片描述7.也可以当server2盗用server1的图片时将器重定向到指定页面

在server1:

[root@server1 conf]# vim nginx.conf

138 server {
139         listen 80;
140         server_name www.westos.org;
141         location / {
142                 root   /web;
143                 index  index.html;
144         }
145         location ~* \.(gif|jpg|png|jpeg)$ {
146                 root /web;
147                 valid_referers none blocked www.westos.org;
148                 if ($invalid_referer) {
149                         rewrite ^/(.*)$ http://bbs.westos.org/daolian.jpg;		#重定向
150                 }
151         }
152 }
153 server {
154         listen 80;
155         server_name bbs.westos.org;
156         location / {
157                 root   /bbs;
158                 index  index.html;
159         }       
160 }

加入测试文件:

[root@server1 conf]# cd /bbs/
[root@server1 bbs]# ls
daolian.jpg  index.html

重新加载nginx:

[root@server1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload

此时在客户端做解析:

[root@foundation63 kiosk]# vim /etc/hosts
[root@foundation63 kiosk]# cat /etc/hosts

172.25.63.1 www.westos.org bbs.westos.org
172.25.63.2 daolian.westos.org

之后在客户端进行访问测试:
在这里插入图片描述
即当客户端访问盗链服务器server2时,server2盗取了server1的内容,server1发现后将其重定向到另一张图片daolian.jpg

发布了127 篇原创文章 · 获赞 65 · 访问量 4345

猜你喜欢

转载自blog.csdn.net/qq_35887546/article/details/104537695
今日推荐