Nginx防盗链
一 盗链
1.1 盗链概述
盗链指的是在自己的界面展示非本服务器上的内容,通过技术手段获得其他服务器的资源。绕过他人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自其他服务器。
因此,通常为了避免被盗链,通常Web服务器建议配置防盗链,其主要防盗链思路是能区别哪些请求是非正常用户请求。
二 防盗链
2.1 防盗链配置
语法:valid_referers none | blocked | server_names | string ...;
默认值:——
可配置段:server, location
2.2 环境准备
主机
|
域名
|
IP
|
备注
|
nginx01
|
good.linuxds.com
|
172.24.10.21
|
被盗方
|
nginx02
|
steal.uclouda.com
|
172.24.10.22
|
盗链方
|
添加解析:/etc/hosts
1 172.24.10.21 good.odocker.com 2 172.24.10.22 steal.uclouda.com 3 [root@nginx0X ~]# nginx -V 4 nginx version: nginx/1.16.1
2.3 模拟盗链
[root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf #创建模拟被盗方配置 server { listen 80; charset utf-8; server_name good.linuxds.com; location / { root /usr/share/nginx/good; index index.html; access_log /var/log/nginx/good.access.log main; error_log /var/log/nginx/good.error.log warn; } }
1 [root@nginx01 ~]# mkdir -p /usr/share/nginx/good/images 2 [root@nginx01 ~]# echo '<h1>Good</h1>' > /usr/share/nginx/good/index.html 3 [root@nginx01 ~]# ll /usr/share/nginx/good/images #上传一张测试图片 4 total 60K 5 -rw-r--r-- 1 root root 4.8K Mar 11 16:27 baidu.png
[root@nginx02 ~]# vi /etc/nginx/conf.d/steal.conf #创建盗链方配置 server { listen 80; charset utf-8; server_name steal.uclouda.com; location / { root /usr/share/nginx/steal; index index.html; access_log /var/log/nginx/steal.access.log main; error_log /var/log/nginx/steal.error.log warn; } }
[root@nginx02 ~]# mkdir -p /usr/share/nginx/steal [root@nginx02 ~]# vi /usr/share/nginx/steal/index.html <html> <body> <br>盗链图片</br> <img src="http://good.linuxds.com/images/baidu.png"> </body> </html>
1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件 2 [root@nginx01 ~]# nginx -s reload #重载配置文件 3 [root@nginx02 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件 4 [root@nginx02 ~]# nginx -s reload #重载配置文件
浏览器访问:http://good.linuxds.com/images/baidu.png
浏览器访问盗链网站:http://steal.uclouda.com/
2.4 防盗链配置01
[root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf server { listen 80; charset utf-8; server_name good.linuxds.com; location / { root /usr/share/nginx/good; index index.html; access_log /var/log/nginx/good.access.log main; error_log /var/log/nginx/good.error.log warn; valid_referers none blocked good.linuxds.com; if ($invalid_referer) { return 403; } } }
1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件 2 [root@nginx01 ~]# nginx -s reload #重载配置文件
配置释义:
valid_referers:此关键字定义了白名单,即本机自身访问允许;
invalid_referer:此为内置变量,通过判断上一行中的valid_referers值会返回0或者1,
- none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址;
- blocked代表被防火墙过滤标记过的请求。如果访问来源不在白名单内,则返回403错误
浏览器访问:http://good.linuxds.com/images/baidu.png
浏览器访问盗链网站:http://steal.uclouda.com/
如上所示:已成功配置防盗链。
[root@nginx01 ~]# vi /etc/nginx/conf.d/good.conf server { listen 80; charset utf-8; server_name good.linuxds.com; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { #针对特定文件类型 valid_referers none blocked *.linuxds.com linuxds.com; access_log /var/log/nginx/good.access.log main; error_log /var/log/nginx/good.error.log warn; if ($invalid_referer) { rewrite ^/ https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1767274412,1868768041&fm=26&gp=0.jpg; } } }
1 [root@nginx01 ~]# nginx -t -c /etc/nginx/nginx.conf #检查配置文件 2 [root@nginx01 ~]# nginx -s reload #重载配置文件
配置释义:
rewrite:判断如果不是白名单第五行则进行重定向到自定义的固定链接。
浏览器访问盗链网站:http://steal.uclouda.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-12-13 KVM 虚拟化技术
2019-12-13 RAID几种方式
2019-12-13 Centos7 自定义systemctl服务脚本
2019-12-13 nginx配置优化+负载均衡+动静分离详解
2019-12-13 nginx负载均衡配置
2019-12-13 keepalived高可用反向代理的nginx