前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何通过 Nginx 配置防盗链保护静态资源(详细配置)

如何通过 Nginx 配置防盗链保护静态资源(详细配置)

原创
作者头像
神秘泣男子
发布于 2024-12-24 08:06:27
发布于 2024-12-24 08:06:27
38710
代码可运行
举报
文章被收录于专栏:nginx专栏nginx专栏
运行总次数:0
代码可运行

防盗链是一种通过检查 HTTP 请求头中的 Referer 字段来限制资源访问的技术,常用于保护图片、视频等静态资源不被其他网站直接引用。以下是防盗链的原理、配置步骤以及测试方法,帮助你快速配置和验证防盗链功能。

下是源码包安装的nginx 如果你是rpm 那么只有路径不一样可以跟着我路径来对比配置 (小白请绕道)

1. 防盗链的原理

防盗链通过检查 HTTP 请求头中的 Referer 字段来判断请求来源:

  • 如果请求来源是允许的域名,Nginx 会正常返回资源。
  • 如果请求来源是未授权的域名(或者没有 Referer 字段),Nginx 会拒绝请求(返回 403 错误)。

常见场景:

  • 保护图片、视频等静态资源不被其他网站直接引用。
  • 限制文件下载资源只能通过特定页面访问。

2. 配置步骤

(1) 编辑 Nginx 配置文件

打开 Nginx 配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/local/nginx/conf/nginx.conf

server 块中添加以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ {
    valid_referers none blocked yourdomain.com *.yourdomain.com;
    if ($invalid_referer) {
        return 403;
    }
}

配置说明:
  • location ~* \.(gif|jpg|jpeg|png|bmp|ico)$
    • 匹配图片文件的扩展名(如 .gif.jpg 等)。
    • ~* 表示正则表达式匹配,并且忽略大小写。
  • valid_referers none blocked yourdomain.com *.yourdomain.com;
    • none:允许没有 Referer 字段的请求(如直接输入 URL 的访问)。
    • blocked:允许被代理或防火墙隐藏了 Referer 的请求。
    • yourdomain.com:允许来自 yourdomain.com 的请求。
    • *.yourdomain.com:允许来自 yourdomain.com 的所有子域名的请求。
  • if ($invalid_referer)
    • 如果请求的来源不符合 valid_referers 的规则,则变量 $invalid_referertrue
  • return 403;
    • 返回 HTTP 状态码 403(禁止访问)。

(2) 测试配置文件语法

在保存配置文件后,测试配置是否正确:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nginx -t

预期输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

如果有错误,检查配置文件中的语法问题并修复。


(3) 重启 Nginx 服务

重启 Nginx 使配置生效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl restart nginx

1. 创建一个简单的测试图片

即使你的网页没有图片资源,你可以手动添加一个测试图片文件到 Nginx 的根目录,方便验证防盗链功能。

步骤

  1. 创建一个测试图片文件: 在 Nginx 的根目录下(通常是 /usr/share/nginx/html//var/www/html/),创建一个简单的图片文件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash
复制
echo "Test Image" > /usr/share/nginx/html/test.jpg

2.访问测试图片:

  • 在浏览器中输入图片的 URL(如 http://yourdomain.com/test.jpg)。
  • 确保图片可以被正常访问。

.从其他来源测试引用:

  • 在其他域名的网页中嵌入这个图片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<img src="http://yourdomain.com/test.jpg" />
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -e "http://otherdomain.com" http://yourdomain.com/test.jpg
Nginx 应该返回 403 错误。

curl -e "http://smqnz.com" 192.168.14.111/123.png
可以访问

如果配置正确,

总结:

通过配置防盗链,可以有效保护网站的静态资源,防止带宽被恶意消耗。在实际应用中,可以根据业务需求调整匹配规则和允许的域名,进一步优化配置。如果你有其他关于 Nginx 防盗链的经验或问题,欢迎留言讨论,让我们一起学习与成长!

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
配置防盗链,成功进去防盗链之后,proxy_pass就不生效了,只访问nginx本地的opt/nginx/html,而不是访问proxy_pass配置的服务器,这种问题有人遇到过吗
配置防盗链,成功进去防盗链之后,proxy_pass就不生效了,只访问nginx本地的opt/nginx/html,而不是访问proxy_pass配置的服务器,这种问题有人遇到过吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
如何为Nginx 配置防盗链功能?
referer 请求头包含了当前请求页面的来源地址,即表示当前页面是通过这个来源页面里的链接进入的。
用户1560186
2019/12/06
5.4K0
如何为Nginx 配置防盗链功能?
13-Nginx配置静态资源防盗链
一般静态资源都可以被外部访问, 这也就造成了很多扒手, 直接会解析你的HTML, 然后爬取你的资源, 所以我们需要设置静态资源防盗链, 用于防止资源外泄
彼岸舞
2022/09/13
8010
12.13 Nginx防盗链
Nginx防盗链目录概要 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($invalid_referer) { return 403; } access_log off
运维小白
2018/02/06
7160
Nginx----跨域,防盗链
浏览器的同源策略:是一种约定,是浏览器最核心也是最基本的安全功能,如果浏览器少了同源策略,则浏览器的正常功能可能都会受到影响。
大忽悠爱学习
2021/12/08
2.7K0
Nginx----跨域,防盗链
Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施。今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一、Nginx中下载防盗链的操作记录 对于一些站点上的下载操作,有很多的下载来源不是本站,是迅雷、flashget, 源源不断的带宽,防盗链绝对是当务之急!使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效; 如果是nginx配置的站点,可以使用secure link来完美解决这个问题,远离迅雷. 以下Nginx的盗链配置,仅用于下载服务器的下载防
洗尽了浮华
2018/01/23
4.4K0
Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
Nginx之防盗链及高可用解读
网页的加载顺序是先加载HTML相关的内容,然后解析HTML的内容,那些需要加载图片,那些需要加载文件,是逐步加载的,对于我们线上的图片等静态资源,经常会被其他网站盗用,外面可以我们请求到一个页面后,这个页面一般会再去请求其中的静态资源,这时候请求头中,会有一个refer字段,表示当前这个请求的来源,我们可以限制指定来源的请求才返回,否则就不返回,这样可以防止资源被盗用。
一个风轻云淡
2023/09/22
1.1K0
Nginx从陌生到入门05——防盗链的基础配置
Nginx的防盗链是一种用于保护资源免受盗链的安全机制。盗链指的是其他网站在未经授权的情况下直接使用你网站上的资源,例如图片、视频或其他文件,消耗你的带宽和资源。Nginx可以检查HTTP请求中的Referer字段,该字段指示了请求的来源网页。你可以配置Nginx只允许特定的Referer来源访问资源,拒绝其他非授权的请求。 Nginx的防盗链可以实现以下作用:
huolong
2023/12/04
1.5K0
Nginx从陌生到入门05——防盗链的基础配置
Nginx 防盗链
根据referer的字段,通过referer告诉服务器该网页是从哪个页面链接过来的,一旦检测到来源不是本站即进行阻止或者返回指定的页面
剧终
2020/09/29
1.4K0
Nginx 防盗链
11、nginx 防盗链问题
​ HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,
用户8639654
2021/07/14
6870
Nginx1.8.1开启防盗链
防盗链:顾名思义,就是防止自己服务器中的链接被他人服务器盗用;特别是对于按流量收费的同学,哇那可损失大了,花自己的钱给别人当图床用。 在Nginx配置文件第21行处替换如下规则: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; valid_referers none blocked *.baidu.com *.google.com *.iosx.top server_names ~\.
楠尘
2018/06/27
4200
011.Nginx防盗链
盗链指的是在自己的界面展示非本服务器上的内容,通过技术手段获得其他服务器的资源。绕过他人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自其他服务器。
木二
2020/07/21
4640
011.Nginx防盗链
Nginx 配置高性能静态网站 - 缓存、Gzip、跨域和防盗链
本篇博客对配置Nginx静态网站中的缓存、Gzip、跨域和防盗链等四个知识点在之前的生产实践中遇到的问题进行归纳和总结,分享出来,以方便同学们有更好的成长。
stark张宇
2024/08/13
3540
Nginx1.8.1开启防盗链
防盗链:顾名思义,就是防止自己服务器中的链接被他人服务器盗用;特别是对于按流量收费的同学,哇那可损失大了,花自己的钱给别人当图床用。
楠尘
2018/05/11
8904
防盗链Apache和Nginx配置对比
一般我们使用的主机每月都有固定的流量,如果当月额度用完服务器可能会暂停,有些是占用太大的流量会影响网站的访问速度。所以,我们在有必要的前提下可以设置服务器的图片或者其他静态资源防盗链。
php007
2020/07/21
1.1K0
Nginx 如何配置防盗链
需求:通常站点,都会想让自己网站的视频和图片,免被盗用,毕竟视频流量,花的都是白花花银子(土豪可以不用考虑)~~.
Linux运维技术之路
2022/06/07
6280
Nginx 如何配置防盗链
Nginx防盗链,Nginx访问控制,Nginx解析php相关配置, Nginx代理
Nginx防盗链: vim /usr/local/nginx/conf/vhost/test.com.conf    = 默认虚拟主机配置防盗链 #防盗链核心配置 location ~* ^.+\.(
叶瑾
2018/06/14
7960
通过Nginx实现图片防盗链的方法
文字型的复制十分简单,图片型的需要额外存储,所以很多采集站长会选择盗链的形式。何为盗链?简单来说,就是将你网站上图片的链接放到别人的网站上,这样在访问那个人的网站时,实际上在调用你网站的图片,不仅使用你的图片,还用你的流量带宽。
会长君
2023/04/24
5790
linux学习第四十六篇:Nginx防盗链,Nginx访问控制,Nginx解析php相关配置,Nginx代理
Nginx防盗链 vim /usr/local/nginx/conf/vhost/test.com.conf 配置如下,可以和上面的配置结合起来: location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; //定义白名单 if ($invalid_re
用户1215343
2018/02/05
1.7K0
linux学习第四十六篇:Nginx防盗链,Nginx访问控制,Nginx解析php相关配置,Nginx代理
nginx防盗链设置
前端开发人员对防盗链这个概念一定不会生疏,类似上面这种图一定见过不少,微信等一些大的平台几乎都做了防盗链处理,那么问题来了什么是防盗链,为何要做防盗链工作? 1.先讲讲防盗链:顾名思义就是不符合规定的
johnhuster的分享
2022/03/28
4320
nginx配置文件防盗链
一般网站为了防止资源被外部链接所盗用,都会使用防盗链来进行处理。思路就是判断请求的域名 如下一个相对完全的示例:
meteoric
2018/11/14
8680
相关推荐
如何为Nginx 配置防盗链功能?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验