Nginx静态资源防盗链配置详解

 更新时间:2023年08月30日 10:26:24   作者:fkjavaer  
这篇文章主要为大家介绍了Nginx静态资源防盗链如何配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1.什么是资源盗链

简单地说,就是将别人的资源用到自己的页面展示给用户。

2.效果演示

1)准备图片

这两张图片直接在浏览器中访问都是可以打开的。

github图片地址:

https://github.githubassets.com/images/modules/site/home-campaign/hero-drone.webp 

豆瓣图片地址:

https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2889598060.webp

2)html准备

cd /usr/local/nginx/html
touch test.html

test.html

<!DOCTYPE html>
<html>
    <body>
        <img src="https://github.githubassets.com/images/modules/site/home-campaign/hero-drone.webp"/>
        <br/ >
        <img src="https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2889598060.webp" alt="douban">
    </body>
</html>

展示效果:访问

http://192.168.110.98/test.html

查看控制台:

 说明douban的图片资源做了防盗链处理。

那么我们自己的资源如何做防盗链处理呢?

3.资源防盗链

关于资源防盗链,我们需要先理解一个概念,那就是请求头中的Referer字段信息,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从那个页面过来的,web服务器根据这个信息进行一些处理,资源防盗链的处理也是根据该字段信息进行相应处理。

Tips:请求头的Referer字段信息是可以通过程序伪装生成的,因此根据Referer信息来实现防盗链并非100%可靠,但是,它能够限制大部分的盗链。

1)准备资源

test.jfif图片:

2)将资源放到nginx服务器的/usr/local/nginx/html文件夹

3)准备test.html页面

<!DOCTYPE html>
<html>
    <body>
        <img src="./test.jfif" alt="test">
    </body>
</html>

4)访问页面

http://192.168.110.98/test.html

可以看到,目前的我们的资源是可以正常访问的,接下来,我们将做一些防盗链的措施。

我们知道web服务器是根据请求头的Referer字段值来判断请求是从哪个页面发送过来的,nginx提供了ngx_http_referer_module模块,来对该信息进行处理。

下面我们来看看相关语法:

作用域:server, location

语法:valid_referers none | blocked | server_names | string ...;

1)valid_referers none;

表示请求头中不存在Referer字段。

2)valid_referers blocked;

表示请求头中存在Referer字段,且其值不以http://或https://开头

3)valid_referers server_names;

表示请求头中存在Referer字段,且其值包含nginx配置文件中server_name的其中一个

4)任意字符串

表示请求头中存在Referer字段,且定义了服务器名称和可选的URI前缀。服务器名称的开头或结尾可以有一个“*”。在检查过程中,“Referer”字段中的服务器端口被忽略;

5)正则表达式

表示请求头中存在Referer字段,且第一个符号应该是“~”。需要注意的是,表达式将从http://或https://之后开始的文本相匹配。

示例:

valid_referers none blocked server_names *.example.com test.example.* ~\.example\.com

除了使用valid_referers指令外,我们还需要用到一个变量$invalid_referer,如果“Referer”请求标头字段值被认为有效,则为空字符串,否则为“1”。

5)配置资源防盗链

因为我们现在要访问test.gfif图片,所以我们如下配置:

location ~^/.*\.(png|jpg|gif|jfif) {
    valid_referers www.example.com;
    if ($invalid_referer){
        return 403;
    }
    root   html;
}

Tips:正则表达式必须以~开头。

这个时候我们再来访问

http://192.168.110.98/test.html,显示无法访问。

我们查看其请求头的Referer字段:

Referer:http://192.168.110.98/test.html,因此被拒绝访问了。

以上就是Nginx配置静态资源防盗链,Nginx是多模块化的,还有很多高级功能,我们后面继续探索。

更多关于Nginx静态资源防盗链的资料请关注脚本之家其它相关文章!

相关文章

  • nginx反向代理进行yum配置的步骤详解

    nginx反向代理进行yum配置的步骤详解

    这篇文章主要给大家介绍了关于nginx反向代理进行yum配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Nginx部署vue项目和配置代理的问题解析

    Nginx部署vue项目和配置代理的问题解析

    这篇文章主要介绍了Nginx部署vue项目和配置代理,需本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,要的朋友可以参考下
    2021-08-08
  • nginx proxy_cache批量清除缓存的脚本介绍

    nginx proxy_cache批量清除缓存的脚本介绍

    今天小编就为大家分享一篇关于nginx proxy_cache批量清除缓存的脚本介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Nginx源码研究之nginx限流模块详解

    Nginx源码研究之nginx限流模块详解

    这篇文章主要介绍了Nginx源码研究之nginx限流模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Nginx中proxy_pass的斜杠的两种方式

    Nginx中proxy_pass的斜杠的两种方式

    Nginx的官方文档将proxy_pass分为不带URI和带URI两种类型,本文就来介绍Nginx中proxy_pass的斜杠的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • nginx模块stream配置的具体使用

    nginx模块stream配置的具体使用

    stream模块一般用于tcp/UDP数据流的代理和负载均衡,可以通过stream模块代理转发TCP消息,本文主要介绍了nginx模块stream配置的具体使用,感兴趣的可以了解一下
    2023-10-10
  • Nginx从搭建到配置支持HTTPS的方法

    Nginx从搭建到配置支持HTTPS的方法

    这篇文章主要介绍了Nginx从搭建到配置支持HTTPS的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • nginx host绕过的三种方式

    nginx host绕过的三种方式

    本文主要介绍了nginx host绕过的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • nginx实现数据库端口转发

    nginx实现数据库端口转发

    本文主要介绍了nginx实现数据库端口转发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Nginx配置txt、pdf、doc、xls等文件直接下载的方法

    Nginx配置txt、pdf、doc、xls等文件直接下载的方法

    这篇文章主要介绍了Nginx配置txt、pdf、doc、xls等文件直接下载的方法,配置方法很简单,本文直接给出配置示例,需要的朋友可以参考下
    2015-04-04

最新评论