Nginx实战案例—盗链和防盗链详解

Nginx实战案例—盗链和防盗链详解

1. 什么是盗链

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

2. 什么是防盗链

WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测,如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求,节省因盗用资源链接而消耗的带宽和性能。

3. 模拟盗链

server2窃取server1的资源:
修改配置文件在server1中添加一个虚拟web:

vim /usr/local/nginx/conf/nginx.conf

132 server {
133         listen 80;
134         server_name www.westos.org;
135         location / {
136         	root /web;
137         	index index.html;
138 		}
139 		}

在这里插入图片描述

cd /web/		#在该目录中放一张图片
nginx -t		#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载

在这里插入图片描述

测试:

网页搜索  www.westos.org/huge.jpg  可以查看到该图片

在这里插入图片描述

修改配置文件在server2中添加虚拟web并写入盗链规则:

vim /usr/local/nginx/conf/nginx.conf

126         server {
127                 listen 80;
128                 server_name daolian.westos.org;
129                 charset utf-8;  #不加这个参数网页上看到的汉字是乱码
130                 location / {
131                         root /web;
132                         index index.html;
133 }
134 }

在这里插入图片描述

mkdir /web
vim /web/index.html

  1 <html>
  2 
  3 <body>
  4 <br>盗链图片</br>
  5 <img src="http://www.westos.org/c.jpg">
  6
  7 </body>
  8 
  9 </html>

在这里插入图片描述

在server2中添加解析:

vim /etc/hosts
nginx -t	#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载

在这里插入图片描述
在真机中添加解析:

vim /etc/hosts

在这里插入图片描述

测试:

http://daolian.westos.org/ 

盗链成功(server2的目录中并没有该图片,而是从www.westos.org网站中盗链过来的)
在这里插入图片描述

4. 防盗链

修改配置文件在serve1中写入放盗链规则:

vim /usr/local/nginx/conf/nginx.conf

139 location ~* \.(gif|jpg|png|jpeg)$ {
140         root /web;
141         valid_referers none blocked www.westos.org;
142         if ($invalid_referer) {
143                 return 403;
144 }
145 }

nginx -t	#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载

在这里插入图片描述测试:

http://daolian.westos.org/ 盗链失败(要盗链的图片变成了小灰色的图标)

在这里插入图片描述
我们可以把它再进行重定向。使别的服务器在盗链时返回的不是403,而是我们想要看到的内容:

修改serve1配置文件:

vim /usr/local/nginx/conf/nginx.conf


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


在/bbs下放一张图片daolian.jpg

nginx -t	#语法检测
nginx -s reload	#在不暂停服务的情况下重新加载

在这里插入图片描述

在这里插入图片描述
给真机做解析:

vim /etc/hosts

在这里插入图片描述

测试:

http://daolian.westos.org/ 盗链失败(查看到的图片为daolian.jpg)

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章