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

🏡作者主页:点击!****

Nginx-从零开始的服务器之旅 专栏:点击****

🐧Linux高级管理防护和群集专栏:************点击!****************

⏰️创作时间:2025年1月8日8点14分


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

1. 防盗链的原理

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

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

常见场景:

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

2. 配置步骤

(1) 编辑 Nginx 配置文件

打开 Nginx 配置文件:

复制代码
vim /usr/local/nginx/conf/nginx.conf

server 块中添加以下内容:

复制代码
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) 测试配置文件语法

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

复制代码
nginx -t

预期输出:

复制代码
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 使配置生效:

复制代码
systemctl restart nginx

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

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

步骤

  1. 创建一个测试图片文件: 在 Nginx 的根目录下(通常是 /usr/share/nginx/html//var/www/html/),创建一个简单的图片文件:

    bash
    复制
    echo "Test Image" > /usr/share/nginx/html/test.jpg

  2. 访问测试图片:

    • 在浏览器中输入图片的 URL(如 http://yourdomain.com/test.jpg)。
    • 确保图片可以被正常访问。
  1. 从其他来源测试引用:

如果配置正确,

总结:

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

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

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

神秘泣男子

相关推荐
Mr.朱鹏23 分钟前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
java_logo35 分钟前
OpenCode 企业级 Docker 部署完整指南
运维·docker·容器·opencode·opencode本地化部署·opencode部署手册·opencode部署方案
TTBIGDATA2 小时前
【knox】User: knox is not allowed to impersonate admin
大数据·运维·ambari·hdp·trino·knox·bigtop
佑白雪乐3 小时前
<Linux基础第10集>复习前面内容
linux·运维·服务器
春日见3 小时前
自动驾驶规划控制决策知识点扫盲
linux·运维·服务器·人工智能·机器学习·自动驾驶
暮云星影3 小时前
四、linux系统 应用开发:UI开发环境配置概述 (三)
linux·ui·arm
玉树临风江流儿3 小时前
docker镜像加速器配置步骤
运维·docker·容器
迷途知返-4 小时前
服务器——那些年我踩过的坑
linux
China_Yanhy4 小时前
我的区块链运维日记 · 第 11 日:生死时速 —— 闪电贷攻击与“红色按钮”
运维·区块链