Nginx企业实战-防盗链的实现

陌路散爱 提交于 2020-03-07 18:49:20

1.什么是防盗链

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

本实验需要两台nginx服务器,一台客户端:

虚拟机名称 ip 作用
server1 172.25.1.1 nginx服务器
server2 172.25.1.2 盗链服务器
真机 172.25.1.250 客户端

(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.png  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.png">

</body>

</html>

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

[root@server2 web]# vim /etc/hosts
[root@server2 web]# cat /etc/hosts
172.25.1.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.1.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:

nginx -t 
nginx -s reload

(6)防盗测试

此时,在使用客户端访问盗链服务器server2时:
在这里插入图片描述
但此时通过server1访问该图片可以正常访问:

(7)也可以当server2盗用server1的图片时将器重定向到指定页面
在server1:

[root@server1 conf]# vim nginx.conf
添加149行内容
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:

nginx -t
nginx -s reload

此时在客户端做解析:

[root@foundation1 ~]# cat /etc/hosts
172.25.1.1  www.westos.org bbs.westos.org 
172.25.1.2  daolian.westos.org 

之后在客户端进行访问测试:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!