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

Nginx防盗链的配置

1、nginx针对文件类型的防盗链配置方法:

location ~* \.(gif|jpg|png|swf|flv|bmp)$ {valid_referers none blocked *.chinaz.com chinaz.com;if ($invalid_referer) {#rewrite ^/ http://www.chinaz.com/403.html;return 403;}
}

  这种方法是在server或者location段中加入:valid_referers none blocked,其中none表示空的来路,也就是直接访问,比如直接在浏览器打开一个文件,blocked表示被防火墙标记过的来路,*.chinaz.com表示所有子域名。

2、nginx针对文件目录的防盗链配置方法:

location /img/ {root /data/img/;valid_referers none blocked *.chinaz.com chinaz.com;if ($invalid_referer) {rewrite ^/ http://www.chinaz.com/error.gif;#return 403;}
}

Apache防盗链的配置

  Apache 防盗链的第一种实现方法,可以用 Rewrite 实现。首先要确认 Apache 的 rewrite module 可用:能够控制 Apache httpd.conf 文件的,打开 httpd.conf,确保有这么一行配置:

LoadModule rewrite_module modules/mod_rewrite.so

  然后在相应虚拟主机配置的地方,加入下列代码:

ServerName www.chinaz.com
# 防盗链配置 参数
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://chinaz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://chinaz.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.chinaz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.chinaz.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.chinaz.com/img/nolink.gif [R,NC]

  chinaz.com/www.chinaz.com 表示自己的信任站点。gif|jpg|swf 表示要保护文件的扩展名(以|分开)。nolink.gif 盗链后的重定向页面/图片。用以输出警示信息,这张图片应该尽可能的小。

  有些用户使用的是虚拟主机,没有服务器的控制权,无法修改 httpd.conf 文件和重启服务器。那么请确认你的虚拟主机支持 .htaccess,将上面的配置写入 .htaccess 文件,放入根目录或图片所在的目录即可:

# 防盗链配置
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://chinaz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://chinaz.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.chinaz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.chinaz.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.chinaz.com/img/nolink.gif [R,NC]

  通过判断referer变量的值,判断图片或资源的引用是否合法,只有在设定范围内的 referer,才能访问指定的资源,从而实现了防盗链(Anti-Leech)的目的。需要指出的是:不是所有的用户代理(浏览器)都会设置 referer 变量,而且有的还可以手工修改 referer,也就是说,referer 是可以被伪造的。本文所讲的,只是一种简单的防护手段。当然,应付一般的盗链也足够了。

Apache和Nginx防盗链相关推荐

  1. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  2. Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...

  3. Nginx防盗链详细设置

    介绍3种Nginx防盗链的方法,节省你的宽带 一:一般的防盗链如下: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocke ...

  4. Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问. ...

  5. Nginx防盗链的实现原理和实现步骤

    Nginx防盗链的实现原理: 了解防盗链的原理之前,我们得先学习一个HTTP的头信息Referer,当浏览器向web服务器发送请求的时候,一般都会带上Referer,来告诉浏览器该网页是从哪个页面链接 ...

  6. 在Apache上配置防盗链功能和隐藏版本号

    文章目录 在Apache上配置防盗链功能 安装DNS服务 配置http服务软件目录 开启服务 开启服务 源站进行防盗链操作 隐藏版本信息步骤 使用抓包工具查看版本信息 隐藏设置 在Apache上配置防 ...

  7. LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)

    一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ...

  8. linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍

    Nginx防盗链 思路与httpd一样,配置也不难,但要与过期时间.不记录日志配置结合起来. 1.配置文件内容 [root@gary-tao test.com]# vim /usr/local/ngi ...

  9. CentOS服务器下nginx防盗链介绍与配置

    转载来源 : CentOS服务器下nginx防盗链介绍与配置 : safebase.cn/article-256622-1.html 一.防盗链介绍 1.什么是防盗链 简单的说,就是某些不法的网站,通 ...

最新文章

  1. EOS 消息设计(1)消息定义
  2. mysql union 出错_ORDER BY子句在MySQL中使用UNION时出错(Error with ORDER BY clause using UNION in MySQL)...
  3. python rsa加密长度_python RSA加密最新(RSA/ECB/PKCS1Padding)
  4. Bumblebee微服务网关之访问日志处理
  5. 随手练——洛谷-P1008 / P1618 三连击(暴力搜索)
  6. 首尔最高旋转餐厅后厨一探究竟
  7. 统计MOOC证书 (15 分)
  8. VSCode TODO 帮助扩展
  9. android 炫酷3d主页,五款超酷安卓手机3D桌面软件合辑推荐
  10. JDK+Tomcat+MySql环境配置—linux
  11. Win10显示文件扩展名
  12. 冈萨雷斯《数字图像处理》学习笔记(一)绪论
  13. Linux系统中文件颜色分别代表什么?
  14. 编写java程序计算梯形面积_学习练习 java面向对象梯形面积
  15. Python带HTML表格图片的自动邮件发送
  16. gc overhead limit exceeded解决方案
  17. 陕西计算机中考考试,2018年陕西省中考考试时间及科目安排公布
  18. 「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章
  19. IntelliJ IDEA在Mac下格式化代码快捷键
  20. 小程序新生英语短剧大赛投票系统

热门文章

  1. jena 开发之 mysql数据导入_在Jena框架下基于MySQL数据库实现本体的存取操作
  2. PostgreSQL中的执行计划
  3. Python机器学习:评价分类结果006precisoion-Recall曲线绘制
  4. 卸载nginx php mysql_centos7中配置nginx+php-fpm+swoole+mysql环境教程
  5. jmeter java性能_jmeter之自定义java请求性能测试
  6. java 需要class interface 或enum_阿里P8教你Java注解与反射
  7. 苹果手机如何降级系统
  8. android高德地图气泡,[置顶] Android-高德地图-显示气泡框
  9. linux根目录缩减非lvm,vmware下linux非LVM管理的根目录扩容经历
  10. Java 算法 复数求和