Nginx配置防盗链保护静态资源的详细教程

 更新时间:2025年02月23日 09:46:55   作者:神秘泣男子  
防盗链是一种通过检查 HTTP 请求头中的 Referer 字段来限制资源访问的技术,常用于保护图片、视频等静态资源不被其他网站直接引用,以下是Nginx防盗链的原理、配置步骤以及测试方法,帮助你快速配置和验证防盗链功能,需要的朋友可以参考下

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_referer 为 true
  • 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

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

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

步骤

  • 创建一个测试图片文件: 在 Nginx 的根目录下(通常是 /usr/share/nginx/html/ 或 /var/www/html/),创建一个简单的图片文件:
echo "Test Image" > /usr/share/nginx/html/test.jpg
  • 访问测试图片:
    • 在浏览器中输入图片的 URL(如 http://yourdomain.com/test.jpg)。
    • 确保图片可以被正常访问。
  • 从其他来源测试引用:
    • 在其他域名的网页中嵌入这个图片:
 <img src="http://yourdomain.com/test.jpg" />
  • 或者用 curl 模拟请求:
curl -e "http://otherdomain.com" http://yourdomain.com/test.jpg
//Nginx 应该返回 403 错误。
 
curl -e "http://smqnz.com" 192.168.14.111/123.png
//可以访问

如果配置正确,

总结:

通过配置防盗链,可以有效保护网站的静态资源,防止带宽被恶意消耗。在实际应用中,可以根据业务需求调整匹配规则和允许的域名,进一步优化配置。

以上就是Nginx配置防盗链保护静态资源的详细教程的详细内容,更多关于Nginx配置防盗链的资料请关注脚本之家其它相关文章!

相关文章

  • nginx报错connect() failed(111: Connection refused)while connecting to upstream解决方法

    nginx报错connect() failed(111: Connection refus

    本文主要介绍了nginx报错connect() failed(111: Connection refused)while connecting to upstream解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Nginx实现动态封禁IP的步骤指南

    Nginx实现动态封禁IP的步骤指南

    在日常的生产环境中,网站可能会遭遇恶意请求、DDoS 攻击或其他有害的访问行为,为了应对这些情况,动态封禁 IP 是一项十分重要的安全策略,本篇博客将介绍如何通过 NGINX 实现动态封禁 IP,从配置到自动化的实现步骤,需要的朋友可以参考下
    2025-02-02
  • Nginx地址重定向的实现

    Nginx地址重定向的实现

    重定向 是将一个域名或地址指向另一个的方法,本文主要介绍了Nginx地址重定向的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Nginx出现403 Forbidden问题的常见原因与解决

    Nginx出现403 Forbidden问题的常见原因与解决

    Nginx 返回 403 Forbidden 错误通常表示客户端没有权限访问请求的资源,这种错误有许多可能的原因,本文将为大家介绍一下常见的原因和对应的解决方法,希望对大家有所帮助
    2025-03-03
  • nginx部署前端dist包详细图文教程

    nginx部署前端dist包详细图文教程

    本文介绍了如何下载Nginx的稳定版,并对下载后的压缩包进行解压和配置,涵盖了将文件放入html目录、修改nginx.conf配置文件以及启动Nginx的步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Nginx的HA高可用的搭建的实现

    Nginx的HA高可用的搭建的实现

    高可用是一种系统设计策略,旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时,仍能持续稳定地运行,本文主要介绍了Nginx的HA高可用的搭建,感兴趣的可以了解一下
    2024-08-08
  • Nginx下Wordpress的永久链接实现(301,404等)

    Nginx下Wordpress的永久链接实现(301,404等)

    经过多番测试,终于在nginx下实现了rewrite的功能,WrodPress的永久链接终于生效了
    2012-09-09
  • 使用nginx.exe时闪退的原因和解决方法

    使用nginx.exe时闪退的原因和解决方法

    最近使用老师给的nginx.exe时,点击nginx.exe突然屏幕就闪一下,经过一番排查,发现是端口被占用所导致的,所以本文就给大家讲讲端口被占用时的解决方法详细步骤,需要的朋友可以参考下
    2023-07-07
  • Nginx upstream使用教程

    Nginx upstream使用教程

    本文主要介绍了Nginx upstream使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 一文弄懂Nginx的location匹配的实现

    一文弄懂Nginx的location匹配的实现

    这篇文章主要介绍了一文弄懂Nginx的location匹配的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论