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
之后在客户端进行访问测试:
来源:CSDN
作者:皮皮彭
链接:https://blog.csdn.net/qq_36417677/article/details/104713512