点击蓝字关注这个神奇的公众号~

某些时候可能您会发现,别人网站直接将您的网站图片拿过去使用,导致额外消耗服务器流量和带宽,如果本身服务器带宽和流量就比较小,被人盗链后势必会造成一定影响。这篇文章分享下如何通过Nginx来设置防盗链,禁止其它网站盗用图片。

防盗链原理

防盗链的原理其实很简单,目前比较流行的做法就是通过Referer来进行判断和限制,Referer的解释说明如下:

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。——引用自百度百科

简单来说,假如我博客域名是xiaoz.me,我在nginx中设置,只允许Referer为*.xiaoz.me的来源请求图片,其它网站来的一律禁止。这里我们需要用到ngx_http_referer_module模块和$invalid_referer变量,请看下面进一步解释。

ngx_http_referer_module模块

ngx_http_referer_module模块用于阻止对“Referer”头字段中具有无效值的请求访问站点。应该记住,使用适当的“Referer”字段值来构造请求非常容易,因此本模块的预期目的不是要彻底阻止此类请求,而是阻止常规浏览器发送的请求的大量流量。还应该考虑到,即使对于有效请求,常规浏览器也可能不发送“Referer”字段。

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

  • 可用于:server,location

可以看到valid_referers指令中存在一些参数,比如none|blocked,含义如下:

  • none:请求标头中缺少“Referer”字段,也就是说Referer为空,浏览器直接访问的时候Referer一般为空。

  • blocked:Referer”字段出现在请求标头中,但其值已被防火墙或代理服务器删除; 这些值是不以“http://” 或 “https://” 开头的字符串;

  • server_names:服务器名称,也就是域名列表。

$invalid_referer变量

我们设置valid_referers 指令后,会将其结果传递给一个变量$invalid_referer,其值为0或1,可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有包含Referer头的值,$invalid_referer将被设置为1。

设置防盗链白名单

白名单就是只允许白名单内的域名访问,其余一律禁止。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|webp)$ {valid_referers none blocked *.xiaoz.me *.xiaoz.top;if ($invalid_referer) {return 403;}
}

上面的配置含义是先用location匹配出需要的格式(图片和视频),然后用valid_referers指令设置允许的域名,其它域名没有包含在valid_referers列表中,$invalid_referer变量返回的值为1,最终返回403,禁止访问。以上就是防盗链白名单的设置。

防盗链黑名单

黑名单与白名单正好相反,就是只禁止黑名单中的域名请求,其余一律放行,相比白名单,黑名单的限制更加宽松。网上大部分教程只提到了防盗链白名单的设置,了解原理后黑名单的设置方法也差不多。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|webp)$ {valid_referers *.baidu.com;if ($invalid_referer = 0) {return 403;}
}

上面的配置中我们用valid_referers指令设置黑名单域名*.baidu.com,获取到指定的Referer头之后,$invalid_referer返回值为0,最终返回403,禁止百度的域名来访问。

总结

以上就是Nginx防盗链(黑白名单)的设置,了解原理后其实非常简单,但由于Referer可以任意伪造,上述方法无法拦截伪造的Referer请求,不过大部分常见的场景还是有作用的。如果您服务器带宽和流量本身就比较小,建议加上防盗链设置。

回复干货】获取精选干货视频教程

回复加群】加入疑难问题攻坚交流群

回复mat】获取内存溢出问题分析详细文档教程

回复赚钱】获取用java写一个能赚钱的微信机器人

回复副业】获取程序员副业攻略一份

点个“在看”表示朕

已阅

Nginx设置图片防盗链(白名单与黑名单)相关推荐

  1. 防盗链Nginx设置图片防盗链

    切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片. 一.全站图片防盗链 在/usr/local/nginx/conf/nginx. ...

  2. 【Nginx】Nginx实现图片防盗链

    目录 Nginx有三种方法可以进行防盗链 1.对Nginx下所有项目的指定资源不同文件类型进行防盗链 2.对指定目录或者指定项目目录进行防盗链 3.nginx 的第三方模块ngx_http_acces ...

  3. PHP 实现图片防盗链,Nginx实现图片防盗链功能

    很多时候在浏览网页的时候,尤其是图片来自QQ空间之类的,会遇到某些文件(图片等)无法访问的情况,这是因为图片的所有方做了防盗链机制 了解防盗链之前先了解下http referer这个属性,http r ...

  4. nginx配置图片防盗链

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;access_log off;valid_referers none blocked *. ...

  5. WordPress 图片防盗链的方法

    现在写博,为了达到图文并茂.增加视觉效果,往往都会把一些图片放在文章里面,这样一来,就涉及到三个方面的问题,一个是存储空间,二是流量,三是 访问及加载速度.随着国内带宽的不断升级,访问及加载已不是什么 ...

  6. WordPress图片防盗链的几种方法

    一般来说,博客圈内的主机每个月流量限制差不多为15G到25G(我说的是一般).如果你的博客每个月流量输出特别多的话,那么说明你的博客人气很不错,或者是使用了大量内链图片或Mp3.不过也不排除你的图片或 ...

  7. lnmp/nginx系统真正有效的图片防盗链完整设置详解

    http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...

  8. Nginx图片防盗链、缓存和压缩的示例

    一.图片防盗链 简单即是最好,最简单的方法是用ngx_http_referer_mmodule模块的valid_referers参数来构建,这也是最常见和最常用的方法: 1 2 3 4 5 6 7 8 ...

  9. https访问http加载不出图片_前端解决第三方图片防盗链的办法

    作者:biaochenxuying 转发链接:https://github.com/biaochenxuying/blog/issues/31 问题 笔者网站的图片都是上传到第三方网站上的,比如 简书 ...

最新文章

  1. linux查看接口名,在linux下 怎么查看网络接口的名字? 网络接口的名字英文是什么呀?...
  2. javascript 重写alert、confirm、prompt 等提示宽框
  3. python论文格式检查系统_论文格式检查软件
  4. poj3685 二分套二分
  5. 带有Spring Security的OAuth 2.0快速指南
  6. mysql uroot p f_Mysql 5.7安装
  7. 百度地图Key的设置方法
  8. 在IIS中调试ASP.NET Core应用程序
  9. raft Paxos
  10. linux安装jdk8
  11. 前中后序遍历的递归与非递归算法,层序遍历
  12. 咖啡种类、做法和历史来源
  13. c语言vc是什么意思,这个VC语句是什么意思
  14. Fragment already added 问题
  15. UVALive 4043 Ants(最大权匹配)
  16. python打开桌面文件_python整理桌面文件
  17. 利用Java计算计算贷款的月支付金额和总偿还金额
  18. 全国计算机在线做题,全国计算机等级考试一级题库.docx
  19. 番茄工作法:保持专注的最有效方法
  20. 考研复试个人陈述范文(共9篇)

热门文章

  1. 遥感SCI期刊模板下载教程———IEEE TGRS、GRSL、JSTARS
  2. macbook 唤醒后不能输入密码
  3. SharePoint debug - Unable to render the data. If the problem persists, contact your web server admin
  4. video视频设置第一帧为封面
  5. 怎么挖掘长尾关键词 SEO关键词挖掘方法教程
  6. 监控网络行为——公务员上班玩游戏
  7. 25 条客户服务名言激励您的团队
  8. 【算法】【c++】打家劫舍问题
  9. 类的继承关系,多态的体现,我的觉得题目还是有点欠缺
  10. 我的ubuntu比windows xp欠缺的地方