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配置proxy_pass代理转发时报404问题

    nginx配置proxy_pass代理转发时报404问题

    这篇文章主要介绍了nginx配置proxy_pass代理转发时报404问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Nginx服务器中强制使用缓存的配置及缓存优先级的讲解

    Nginx服务器中强制使用缓存的配置及缓存优先级的讲解

    这篇文章主要介绍了Nginx服务器中强制使用缓存的配置及缓存优先级的讲解,一定程度上可以帮助大家解决Nginx不缓存或缓存失效的问题,需要的朋友可以参考下
    2016-01-01
  • 基于Nginx的Mencached缓存配置详解

    基于Nginx的Mencached缓存配置详解

    这篇文章主要介绍了基于Nginx的Mencached缓存配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Nginx轻松解决跨域问题的过程详解

    Nginx轻松解决跨域问题的过程详解

    当你遇到跨域问题,不要立刻就选择复制去尝试,请详细看完这篇文章再处理 ,本文给大家详细介绍了Nginx如何轻松搞定跨域问题,文中通过代码示例额和图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • nginx 版本升级的实现方法

    nginx 版本升级的实现方法

    文介绍了如何在CentOS7服务器上无中断地将Nginx从1.18.0版本升级到1.19.7版本,提供了两种升级方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • nginx server_name配置多个域名时的坑

    nginx server_name配置多个域名时的坑

    Nginx配置多个server_name时,$server_name默认取第一个值,导致PHP获取错误,下面就来介绍一下该问题的解决,感兴趣的可以了解一下
    2025-05-05
  • 解决Nginx端口冲突的排查方法示例

    解决Nginx端口冲突的排查方法示例

    这篇文章主要介绍了解决Nginx端口冲突的排查方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • nginx配置gzip压缩优化传输效率加快页面访问速度的问题

    nginx配置gzip压缩优化传输效率加快页面访问速度的问题

    本文介绍了如何在nginx服务器中配置gzip压缩,通过压缩HTTP响应内容,减少数据传输大小和响应时间,从而提升网站性能和访问速度,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Nginx rewrite和proxy_pass的区别及说明

    Nginx rewrite和proxy_pass的区别及说明

    这篇文章主要介绍了Nginx rewrite和proxy_pass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx更换ssl证书不生效的问题解决

    Nginx更换ssl证书不生效的问题解决

    本文主要介绍了Nginx配置中更换SSL证书后,新证书不生效的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12

最新评论