关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

云服务器Nginx配置图片防盗链

发布时间:2021/1/27 11:36:31
香港云服务器

为了防止其他站点直接从我们网站引用图片等链接,消耗了我们服务器资源和网络流量,我们一般会对图片等资源做一些限制,比如打水印,防盗链设置等,本文主要结合Nginx来讲解如何设置图片防盗链。

我们所说的防盗链功能是都是基于 HTTP 协议支持的 Referer 机制,通过 referer 跟踪来源,对来源进行识别和判断。 利用这个策略,我们基本可以防止其他站点直接链接我们站上的图片。 举个例子,如果a.com网站的页面调用了我站的图片:https://www.helloweba.net/p.jpg ,我们通过Nginx来判断它的来源域,不属于www.8a.hk过来的图片都返回403,即禁止访问。

打开对应站点的conf配置文件,有关Nginx站点配置文件可以参考: https://www.8a.hk/server/504.html ,主要配置代码如下:

  1. location ~*\.(gif|jpg|jpeg|png|bmp|swf){
  2. valid_referers none blocked www.8a.hk m.8a.hk;
  3. if ($invalid_referer) {
  4. return 403;
  5. }
  6. }

 

以上代码解释如下:

1、location中指定要防篡改的文件类型,多个后缀用“|”符号分开。

2、valid_referers指定资源访问是通过以下几种方式为合法,即白名单,允许文件链出的域名白名单。

none:直接通过url访问,无referer值的情况

blocked:referer值被防火墙修改

servername:指定资源在合法的域名白名单中可以被引用,支持*通配符,多个域名使用空格符分开

3、if判断如果用户请求的资源不符合上述配置,那么rewrite重定向到你想指定的url上,也可以配置403权限错误。

以上设置差不多就可以起到防盗链作用了,但是,这样并不是彻底地实现真正意义上的防盗链!

我们应该注意设置:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  2. {
  3. expires 30d;
  4. valid_referers www.8a.hk m.8a.hk;
  5. if ($invalid_referer) {
  6. return 403;
  7. }