首页 > 运维 > linux运维 > 正文

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

絕刀狂花
发布: 2025-07-20 12:04:01
原创
560人浏览过

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

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

1. 防盗链的原理

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

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

常见场景:

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

2. 配置步骤(1) 编辑 Nginx 配置文件

打开 Nginx 配置文件:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">vim /usr/local/nginx/conf/nginx.conf</code>
登录后复制

server 块中添加以下内容:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ {    valid_referers none blocked yourdomain.com *.yourdomain.com;    if ($invalid_referer) {        return 403;    }}</code>
登录后复制

如何通过 Nginx 配置防盗链保护静态资源(详细配置)
配置说明: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_referertruereturn 403;:返回 HTTP 状态码 403(禁止访问)。

(2) 测试配置文件语法

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

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">nginx -t</code>
登录后复制

预期输出:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful</code>
登录后复制

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


(3) 重启 Nginx 服务

重启 Nginx 使配置生效:

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音208
查看详情 琅琅配音
代码语言:javascript代码运行次数:0运行复制
<code class="javascript">systemctl restart nginx</code>
登录后复制
1. 创建一个简单的测试图片

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

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

2.访问测试图片:在浏览器中输入图片的 URL(如 https://img.php.cn/upload/article/001/503/042/175298425054815.jpg)。确保图片可以被正常访问。

.从其他来源测试引用:在其他域名的网页中嵌入这个图片:

代码语言:javascript代码运行次数:0运行复制
<code class="javascript">@@##@@</code>
登录后复制
代码语言:javascript代码运行次数:0运行复制
<code class="javascript">curl -e "http://otherdomain.com" https://img.php.cn/upload/article/001/503/042/175298425054815.jpgNginx 应该返回 403 错误。curl -e "http://smqnz.com" 192.168.14.111/123.png可以访问</code>
登录后复制

如果配置正确,

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

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

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

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

神秘泣男子

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

以上就是如何通过 Nginx 配置防盗链保护静态资源(详细配置)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号