前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
一、什么是盗链
盗链是一种网络行为,指的是一个网站未经授权,直接使用另一个网站资源(如图片、视频、音乐、文件等)的链接地址,使得这些资源在未经允许的情况下被访问和使用。这种行为通常发生在内容提供商希望保护其资源不被他人非法使用的情况下。盗链可能会导致以下几个问题:
- 宽带消耗
- 版权侵犯
- 广告收入损失
- 服务滥用
-
法律风险
二、防盗链
1、实现模块
Nginx 防盗链主要是通过ngx_http_referet_module模块实现的,该模块通过检查HTTP请求中的 Referer 头部来判断请求是否合法。如果请求中的 Referer与配置的规则不匹配,则可以返回403状态码,拒绝访问资源
2、防盗链配置
配置要点
[root@nginx-server ~]# vim /etc/nginx/nginx.conf
# 日志格式添加"$http_referer"
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# valid_referers 使用方式
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
- none:允许没有http_refer的请求访问资源
- blocked:允许不是http://开头的,不带协议的请求访问资源--被防火墙过滤掉的
- server_names:只域允许指定ip/名来的请求访问资源(白名单)
三、实验
1、环境准备
主机名 | ip地址 | 说明 |
---|---|---|
centos-2 | 10.0.0.3 | nginx服务器 |
centos-1 | 10.0.0.2 | nginx服务器,对centos-2进行盗链 |
centos-3 | 10.0.0.4 | nginx服务器,对centos-2进行盗 |
2、盗链配置
2.1、使用centos-2进行nginx服务发布:
[root@centos-2 ~]# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location ~ .*\.(gif|jpg|png|jpeg)$ {
root /usr/share/nginx/html;
index K8s.png;
}
}
浏览器测试访问:
2.2、在centos-1中对其进行盗链:
[root@centos ~]# cat /usr/share/nginx/html/index.html
<html>
<head>
<meta charset="utf-8"> #用来做实验 红色的底
<title>qf.com</title>
</head>
<body style="background-color:red;">
<img src="http://10.0.0.3/K8s.png"/>
</body>
</html>
浏览器访问,发现盗链成功
3、防盗链配置
3.1、更改centos-2进行防盗链配置
[root@centos-2 ~]# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location ~ .*\.(gif|jpg|png|jpeg)$ {
root /usr/share/nginx/html;
index K8s.png;
valid_referers server_names 10.0.0.2; # 表示只允许10.0.0.2访问
if ($invalid_referer){
return 502;
}
}
}
测试,发现,10.0.0.2能够进行访问,10.0.0.4不能够访问到
浏览器测试访问:
当然,实验中可能会遇到缓存问题,建议使用谷歌下Ctrl+Shift+N使用无痕模式实验。
致谢
在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。
学习永无止境,让我们共同进步!!