nginx 防盗链

11-27 1,001 views

一、盗链原理

盗链是一种损害原有网站合法利益,给原网站所在服务器造成额外负担的非法行为。要采取防盗链的措施,首先需要了解盗链的实现原理。 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端。比如在请求一个网页时,首先会传回该网页的文本内容,当客户端浏览器在解析文本的过程中发现有图片存在时,会再次向服务器发起对该图片资源的请求,服务器将存储的图片资源再发送给客户端。在这个过程中,如果该服务器上只包含了网页的文本内容,并没有存储相关的图片资源,而是将图片资源链接到其他站点的服务器上去了,这就形成了盗链行为。

 

二、盗链演示

实验环境:2台安装好nginx服务的机器。

a机器 盗链机器 192.168.0.241

b机器 被盗链机器 192.168.0.242

先在a、b机器装好nginx

a机器nginx 配置

# cat ycy.conf

server {
listen 80;
server_name 192.168.0.242;
location ~.*\.(jpg|jepg|gif|css|png|ico)?$ {
root /data/ycy/nginx/;
expires 30d;
break;
}
location / {
root /data/ycy/nginx;
index index.html;
}
}

 

在/data/ycy/nginx创建一个html 页面,导入一个b机器的图片地址。

cd /data/ycy/nginx

echo “<img src = “http://192.168.0.242/images/test.jpg”>
” > index.html

检查配置是否正常,并重载Nginx

nginx -t   && nginx -s reload

 

 

b 机器nginx 配置 (b机器是一个图片资源网站)

# cat /etc/nginx/conf.d/ycy.conf

server {
listen 80;
server_name 192.168.0.242;
location ~.*\.(jpg|jepg|gif|css|png|ico)?$ {
root /data/ycy/nginx/;
expires 30d;
break;
}
}

cd /data/ycy/nginx

mkdir images

echo “<img src = “/data/ycy/nginx/images/test.jpg”>” > index.html

拷贝一个图片文件名为test.jpg的到images目录下

systemctl restart nginx  重启

直接访问下b机器的网站,看看能否看到测试图片

 

a网站访问详情

可以看到图片属于242机器上的资源,客户端用浏览器访问192.168.0.241,返回的是192.168.0.242上的图片资源 ,盗链成功!

可以看到Referer的头域的值来自192.168.0.241

 

三、防盗链演示

根据文件类型实现防盗链的配置实例

修改b服务器上的nginx配置文件

server {
listen 80;
server_name 192.168.0.242;
root /data/ycy/nginx;
location ~*\.(jpg|jepg|gif|css|png|ico)$ {
valid_referers none 192.168.0.242;
if ($invalid_referer) {
rewrite ^/ http://192.168.0.242/images/stop.jpg;
}

}

}

server {
listen 80;
server_name 192.168.0.242;
root /data/ycy/nginx;

}

 

在a机器上访问你会发现是访问不到b机器上的图片资源了。。 而b机器可以正常访问自己的资源。。

 

参考地址https://blog.51cto.com/beckoning/1873607

zookeeper基础

zookeeper基础原理及介绍路径如下: https://xuliugen.blog.csdn.net/article/details/53572760?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEAR...

阅读全文

ssl证书安装

一、证书申请 云服务器上的证书申请,如腾讯云,在云产品->域名管理->ssl证书管理-申请一个免费的证书。如图: 申请完之后,等审核完毕就会发通知到你...

阅读全文

编译安装php

Linux 6 下编译安装 PHP 5.6实例详解 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言...

阅读全文

欢迎留言