当前位置: 首页 > news >正文

【Nginx】Nginx防盗链的配置详解

前情提要:本篇博客详细介绍了防盗链,以及配置盗链盗取网站资源和配置防盗链防止别人盗取两种示例,通过本篇博客你可以学会利用nginx配置盗链和防盗链

环境清单

真实服务主机:172.25.254.10/24

盗链主机:172.25.254.11/24

一、Nginx防盗链简介:

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种:

none: #请求报文首部没有referer首部, #比如用户直接在浏览器输入域名访问web网站,就没有referer信息。 blocked: #请求报文有referer首部,但无有效值,比如为空。 server_names: #referer首部中包含本主机名及即nginx 监听的server_name。 arbitrary_string: #自定义指定字符串,但可使用*作通配符。示例: *.timinglee.org www.timinglee.* regular expression: #被指定的正则表达式模式匹配到的字符串,要使用~开头,例如: ~.*\.timinglee\.com

正常通过搜索引擎搜索web网站并访问该网站的referer信息如下

172.25.254.1 - - [22/Jul/2024:09:27:36 +0800] "GET /favicon.ico HTTP/1.1" 404 149 "http://lee.timinglee.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" 2024/07/22 09:27:36 [error] 34596#0: *205 open() "/webdata/nginx/timinglee.org/lee/favicon.ico" failed (2: No such file or directory), client: 172.25.254.1, server: lee.timinglee.org, request: "GET /favicon.ico HTTP/1.1", host: "lee.timinglee.org", referrer: "http://lee.timinglee.org/"

二、实现盗链

在一个web站点盗链另一个站点的资源信息,比如:图片、视频等

# 创建放盗链文件 [root@Nginx ~]# mkdir /webdata/nginx/doubledragon.org/daolian [root@Nginx ~]# mv daolian.png /webdata/nginx/doubledragon.org/daolian/ # 创建盗链文件 [root@Nginx ~]# mv dragon.png /webdata/nginx/doubledragon.org/img/ # 在新的一台主机配置盗链 [root@Nginx2 ~]# vim /var/www/html/index.html <html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <title>盗链</title> </head> <body> <img src="http://www.doubledragon.org/img/dragon.png" > <h1 style="color:red">欢迎大家</h1> <p><a href=http://www.doubledragon.org>狂点dragon</a>出门见喜</p> </body> </html>

访问测试

可以看见如果没有防盗措施,那么盗版网站可以直接使用我们的网站内的图片和资源等,点击链接也可以直接跳转到我们的页面

三、实现防盗链

# 编辑nginx子配置文件 [root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf server { listen 80; server_name www.doubledragon.org; root /webdata/nginx/doubledragon.org; location / { valid_referers none blocked server_names *.doubledragon.org ~/.baidu/.; if ($invalid_referer){ return 404; } } location /img { valid_referers none blocked server_names *.doubledragon.org ~/.baidu/.; if ($invalid_referer){ rewrite ^/ http://www.doubledragon.org/daolian/daolian.png; } } } # 配置文件解析 # 第一段 valid_referers:定义了哪些来源被认为是“合法”的。 none:请求头中没有 Referer 字段(例如直接在浏览器输入网址)。 blocked:Referer 字段存在,但被防火墙或代理屏蔽了。 server_names:Referer 是本服务器配置的域名(即 www.doubledragon.org)。 *.doubledragon.org:所有 doublerdragon.org 的子域名。 ~/.baidu/.:正则匹配,允许来自百度(baidu)的请求(通常是为了让搜索引擎爬虫能正常抓取)。 if ($invalid_referer):如果请求的来源不在上述白名单中(即变量 $invalid_referer 为真),则执行大括号内的操作。 return 404;:直接返回 HTTP 404 错误页面。这意味着如果有人在别的网站引用了你网站上的普通文件(非图片),请求会被直接拒绝。 # 第二段 valid_referers:这里的白名单规则与上面完全一致。 rewrite ^/ http://www.doubledragon.org/daolian/daolian.png;: 当非法请求访问 /img 目录下的资源时,不会返回 404 错误。 而是使用 rewrite 指令将请求重定向到一个特定的图片:http://www.doubledragon.org/daolian/daolian.png。 实际效果:如果其他网站盗链了你网站的图片,他们网页上显示的将不再是他们想要的图片,而是你指定的这张 daolian.png(通常是一张“禁止盗链”或网站 Logo 的图片)。

可以看见盗版网站无法访问我们的图片资源了,点击链接也会出现404

http://www.jsqmd.com/news/606972/

相关文章:

  • 2026年广东工业橡胶件选购,衡水博优橡塑行业地位及优势分析 - 工业推荐榜
  • AGENTS.md vs .cursorrules:深度对比后,我为什么选择统一标准?
  • Qwen-Image效果实测:看看它生成的带复杂文字图片有多惊艳
  • AutoCAD字体管理终极指南:FontCenter自动解决字体缺失问题
  • Sonic云真机平台前端对接指南:Vue/React项目集成最佳实践
  • novelWriter国际化支持:如何为多语言写作优化设置
  • 过炉治具使用寿命钛合金解决方案
  • Swift-All案例分享:用QLoRA技术训练的高质量对话模型
  • Pixel Aurora Engine 快速体验:无需安装,使用在线Notepad编写Prompt即时生成
  • go-systemd 错误处理最佳实践:如何优雅处理 systemd 集成异常
  • AI Agent把上周决策忘得一干二净时,该怎么办?
  • 英语新课标融合剑桥,KET PET口语能力成关键
  • Spyglass功耗分析:从RTL到优化的全流程实践
  • 伐度司他Vadadustat引起高血压,降压治疗与用药调整
  • 蔚蓝档案自动化脚本终极指南:如何一键实现游戏全流程自动化
  • 2026博优橡塑满意度怎么样,产品性价比高不高? - myqiye
  • ThinkPad风扇控制进阶指南:TPFanCtrl2深度解析与高级调优方案
  • Phi-4-Reasoning-Vision快速部署:CI/CD自动化测试流水线搭建
  • intv_ai_mk11多场景落地:制造业设备故障描述生成维修SOP、农业技术问答知识库构建
  • 10分钟快速搭建QQ签名API:Windows一键部署完全指南
  • PyTorch 2.5镜像体验:开箱即用深度学习环境,快速验证AI想法
  • League-Toolkit:本地化英雄联盟客户端效率工具全解析
  • OpenClaw国产化替代:Qwen3-14B完全自主技术栈实践
  • 如何免费使用Claude Code 和Codex 官方模型
  • 别再花冤枉钱了!这12个刚刚爆火的开源AI项目,建议所有打工人连夜码住!
  • OpenClaw错误处理大全:Phi-3-vision任务失败的20种解决方案
  • WSL2保姆级安装指南:从Hyper-V配置到Linux子系统完美运行
  • BetterGI:基于计算机视觉的原神智能自动化解决方案深度解析
  • DeepSeek LeetCode 1425.带限制的子序列和 public int constrainedSubsetSum(int[] nums, int k)
  • BOTW存档编辑器终极指南:5分钟掌握《塞尔达传说:旷野之息》存档修改