nginx配置防盗链的三种实现方式总结

目录
  • 什么是资源盗链
  • 一、引导案例
  • 二、Nginx防盗链实现原理
  • 三、Nginx防盗链具体实现
    • 实现方式一
    • 实现方式二
    • 实现方式三
  • 总结

什么是资源盗链

资源盗链是指内容不在自己服务器上,而通过技术手段,绕过别人的限制,将别人的内容,比如热门的图片放到自己页面上,展示给用户,以此来盗取别人网站的流量,即蹭流量。

简而言之就是用别人的东西成就自己的网站

如下,分别在网上找的两个图片,可以直接在浏览器中打开这2个链接

一、引导案例

接下来,利用上面的这两个图片链接,我们在nginx的资源目录下,创建一个html页面,将这两张图片的链接设置进去

如下有一个 a.html的页面

在a.html的页面中引用上面两个图片链接,内容如下:

启动nginx服务,然后浏览器上访问a.html页面,观察图片展示的效果

从展示的效果来看,第一张图片可以正常展示,而第二张图片则无法显示,也就是说,第二张图片的地址添加了防止盗链的功能;

二、Nginx防盗链实现原理

了解防盗链的原理之前,需要了解一下HTTP的头信息Referer这个参数;

当浏览器向web服务器发送请求的时候,一般都会带上Referer,来告诉浏览器该网页是从哪个页面链接过来的;

后台服务器根据获取到的这个Referer信息,从而判断是否为自己信任的网站地址,如果是则放行继续访问,如果不是则可以返回403(服务端拒绝访问)的状态信息)

在本地模拟上述的服务器效果如下:

三、Nginx防盗链具体实现

valid_referers

  • nginx会通过查看referer自动和valid_referers后面的内容进行匹配;
  • 如果匹配到了就将i n v a l i d r e f e r e r 变 量 置 0 , 如 果 没 有 匹 配 到 ,则将invalid_referer变量置为1;
  • 匹配的过程中不区分大小写;

其他参数介绍:

  • none:如果Header中的Referer为空,允许访问;
  • blocked:在Header中的Referer不为空,但是该值被防火墙或代理进行伪装过,如不带"http://" 、"https://"等协议头的资源允许访问;
  • server_names:指定具体的域名或者IP;
  • string: 可以支持正则表达式和*的字符串。如果是正则表达式,需要以~
    开头表示

实现方式一

1、在nginx的html目录下创建一个images的目录

2、在nginx.conf中添加如下配置

3、重启nginx,访问下这张图片

4、将这个图片的路径也配置到上面的 a.html中

5、重启nginx之后再次访问a.html,可以正常访问

为了实现防盗链功能,只需要在上面的nginx.conf配置中添加如下内容

添加完毕,重启nginx,再次访问该页面,这时候可以看到,图片就无法再访问了,这就实现了防盗链的功能

实现方式二

针对整个目录进行设置

如果要设置的图片很多的话,还可以针对整个目录进行设置,可以参考如下:

然后在自定义的a.html中修改下图片的路径即可

再次访问页面,也能达到上面的效果

实现方式三

从上面的效果来看,确实达到了防止盗链,但是在实际应用中,希望那些未展示出来的图片显示的更加友好点,可以结合rewrite的方式来做,下面来看具体的实现步骤

1、在网上找一张图片并放到images目录下

效果如下

2、修改nginx.conf配置文件

关键配置信息如下,即将原来的返回403,使用rewrite指向特定的图片即可

修改完毕后重启nginx服务,再次访问上面的路径,可以看到下面的效果

这样也实现了防盗链的效果

总结

到此这篇关于nginx配置防盗链的三种实现方式的文章就介绍到这了,更多相关nginx配置防盗链内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx和Apache几种防盗链配置方法实例

    要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫 referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源 文件,则可以跟踪到显示它的网页地址.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返 回指定的页面. Nginx防盗链的配置 1.nginx针对文件类型的防盗链配置

  • nginx 防盗链防爬虫配置详解

    新建配置配置文件 (例如进入到nginx安装目录下的conf目录,创建: agent_deny.conf) 禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } 禁止指定UA及UA为空的访问 #forbidden Scrapy if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #forbidden UA if

  • Nginx防盗链的配置方法

    处于服务性能的考虑,我们通常把HTML静态资源按照不同类型划分存放在多台服务上. 如果拓扑图: 超文本传输协议中的Referer作用 Referer:null    表示请求者直接访问 Referer:blocked  一般为防火墙设备添加的 Referer:URL      表示URL中的主机告诉请求者的间接访问 图中jpg.good.com显然是一台专门用户存放图片的服务器,而www.good.com是一台WEB服务器,从域名可以看出必然是一家公司,条件: 1.只允许访问www.good.c

  • nginx rewrite重写规则与防盗链配置方法教程详解

    导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面. nginx rewrite重写规则与防盗链配置方法如下所示: nginx rewite 规则,官方文档:http://wiki.nginx.org/NginxHttpRewriteModule nginx rewrite规则格式:rewrite regex replacement flag flag标记有四种格式: last – 相

  • Nginx配置防盗链的完整步骤

    需求: 通常站点,都会想让自己网站的视频和图片,免被盗用,毕竟视频流量,花的都是白花花银子(土豪可以不用考虑)~~. 一.单刀直入,先上nginx配置文件 server { listen 80; server_name www.test.com; root /data/web/; index index.php index.html; access_log /data/logs/nginx/biao.madacode.access.log main; location /{ root /home

  • Nginx跨域访问场景配置和防盗链详解

    跨域访问控制 跨域访问 为什么浏览器禁止跨域访问 不安全,容易出现CSRF攻击! 如果黑客控制的网站B在响应头里添加了让客户端去访问网站A的恶意信息,就会出现CSRF攻击 Nginx如何配置跨域访问 add_header语法 Syntax:add_header name value [always]; Default:- Context:http, server, location, if in location 语法解释: add_header name value [always]; nam

  • Nginx图片防盗链配置实例

    做运维的朋友经常会有一些烦恼,比如网站总是被人抄袭,比如网站总是被人引用上面的图片,虽然一张图两张图,并不耗费很多流量,但一旦引用的人多了,这个还是比较废流量的. 防盗链就是禁止其他网站引用自己网站资源而做的一系列设置,优点就不需要说了,绝多数就是防止资源浪费,特别是有宽带.流量限制的空间如果不做一些 限制可能就光引用自己网站图片.视频等等资源可能会消耗很大一部分流量.本文就简单的说一下在nginx服务器上如何做防盗链设置. nginx防盗链代码 第1步:下载nginx网站配置文件. 有些网友可

  • 详解Nginx防盗链和Nginx访问控制与Nginx解析php的配置

    详解Nginx防盗链和Nginx访问控制与Nginx解析php的配置 Nginx防盗链 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names *.test.com ; if ($invalid_referer) { return 403; } access

  • 配置Nginx的防盗链的操作方法

    实验环境 •一台最小化安装的CentOS 7.3虚拟机 •配置:1核心/512MB •nginx版本1.12.2 一.配置盗链网站 1.启动一台nginx虚拟机,配置两个网站 vim /etc/nginx/conf.d/vhosts.conf 添加以下内容 server { listen 80; server_name site1.test.com; root /var/wwwroot/site1; index index.html; location / { } } server { list

  • nginx利用referer指令实现防盗链配置

    实现图片防盗链: location ~* \.(gif|jpg|png|webp)$ { valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.; if ($invalid_referer) { return 403; #rewrite ^/ http://www.domain.com/403.jpg; } root /opt/www/image; } 以上所有来至domain

随机推荐