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 路由转发和反向代理location配置实现

    Nginx 路由转发和反向代理location配置实现

    本文主要介绍了Nginx 路由转发和反向代理location配置实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Nginx学习之静态文件服务器配置方法

    Nginx学习之静态文件服务器配置方法

    本篇文章主要介绍了Nginx学习之静态文件服务器配置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • nginx配置域名访问时域名后出现两个斜杠//的解决方法

    nginx配置域名访问时域名后出现两个斜杠//的解决方法

    最近这两天重新写了一下我的个人网站,在阿里云新买了一台服务器,配置好以后出现了一个问题,就是输入域名后域名地址会自动在后面追加两个斜杆,需要的朋友可以参考下
    2020-07-07
  • Nginx中防止SQL注入攻击的相关配置介绍

    Nginx中防止SQL注入攻击的相关配置介绍

    这篇文章主要介绍了Nginx中防止SQL注入攻击的相关配置介绍,文中提到的基本思路为将过滤的情况用rewrite重订向到404页面,需要的朋友可以参考下
    2016-01-01
  • Nginx的405 not allowed错误解决方法

    Nginx的405 not allowed错误解决方法

    本文主要介绍了Nginx的405 not allowed错误解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 详解常用的nginx rewrite重写规则

    详解常用的nginx rewrite重写规则

    这篇文章主要介绍了详解常用的nginx rewrite重写规则,Nginx的rewrite功能是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。感兴趣的可以一起来了解一下
    2019-03-03
  • Nginx 应用范围和使用详解

    Nginx 应用范围和使用详解

    这篇文章主要介绍了Nginx 应用范围和使用详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Nginx图片服务器配置之后图片访问404的问题解决

    Nginx图片服务器配置之后图片访问404的问题解决

    本文主要介绍了Nginx图片服务器配置之后图片访问404的问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Nginx虚拟主机的六种配置(最全)

    Nginx虚拟主机的六种配置(最全)

    利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,本文主要介绍了Nginx虚拟主机的六种配置,具有一定的参考价值,感兴趣的可以了解下
    2023-08-08
  • nginx反向代理时如何保持长连接

    nginx反向代理时如何保持长连接

    如果我们使用了nginx去作为反向代理或者负载均衡,从客户端过来的长连接请求就会被转换成短连接发送给服务器端。为了支持长连接,我们需要在nginx服务器上做一些配置。
    2020-10-10

最新评论