Nginx 防盗链(图片/文件/目录防盗链)

1.防盗链处理

通过REFERER判断

 代码如下 复制代码

location ~ .*.(gif|jpg|jpeg|png|bmp|wma|mp3|swf)$ {
      valid_referers none blocked server_names demo.hyzy120.com *.baidu.com;
      if ($invalid_referer) {return 403;}
    expires      30d;
}

#demo.hyzy120.com   允许的网址 ,多个网址用空格隔开例子:

一,针对后缀实行防盗链

 代码如下 复制代码

location ~* .(gif|jpg|jpeg|png|bmp|txt|zip|jar|swf)$ {
valid_referers none blocked *.mynginx.com;
if ($invalid_referer) {
rewrite ^/  yun_qi_img/logo.gif;
#return 403;
}
}

二,针对图片目录实行防盗链

 代码如下 复制代码

location /images/ {
alias /data/images/;
valid_referers none blocked *.mynginx.com;
if ($invalid_referer) {
rewrite ^/  yun_qi_img/logo.gif;
#return 403;
}
}

Nginx实现valid_referer全面解析

2.限速处理

限速使用 limit_zone, limit_conn 以及 limit_rate 进行配置
首先在 http 段配置一个 limit_zone,然后在需要的地方使用 limit_conn 和 limit_rate 进行限速设置,如下一个简单的例子

 代码如下 复制代码

http {
  limit_zone   one  $binary_remote_addr  10m;
  server {
    location /{
      limit_conn   one  5;
      limit_rate 20k;
    }
  }
}

说明:
limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。
limit_conn one 1;
限制在one中记录状态的每个IP只能发起一个并发连接。
limit_rate 20k;
对每个连接限速20k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许三个并发连接,那么这个IP就是限速为limit_rate×3,在设置的时候要根据自己的需要做设置调整,要不然会达不到自己希望的目的。

修改完检测了一下配置文件

 代码如下 复制代码

#/usr/local/nginx/sbin/nginx -t
nginx: [warn] the "limit_zone" directive is deprecated, use the "limit_conn_zone" directive instead in /usr/local/nginx/conf/nginx.conf:7

出来了一个警告,limit_zone 已经弃用!该属性改成了limit_conn_zone。

那就改成:

 代码如下 复制代码

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_rate 20k;    //最大100k  20*5
    limit_conn perip 5;   //每个ip最多链5个
    limit_conn perserver 1000;  //最大链1000个ip??  
}

NginxHttpAccessKeyModule 插件

这个需要安装额外的模块,下载模块源码,然后按照说明文档,将下载来的源码中”$HTTP_ACCESSKEY_MODULE” 替换成 “ngx_http_accesskey_module“,再

 

 代码如下 复制代码
./configure –add-module=path/to/nginx-accesskey

完了以后再重新编译一次nginx,然后就可以在配置文件中使了。

 代码如下 复制代码

location /download {
accesskey             on;
accesskey_hashmethod  md5;
accesskey_arg         "key";
accesskey_signature   "mypass$remote_addr";
}

这样一个下载的文件就需要 /file.zip?key=09093abeac094 这样的形式进行下载

其中 key的值为 mypass和下载客户端ip 进行md5运算获得。比如在 php 中可以向如下方式输出针对客户ip的下载链接地址

时间: 2024-09-26 13:39:48

Nginx 防盗链(图片/文件/目录防盗链)的相关文章

c# .net中下载文件及图片文件的防盗链功能实现方法

在c#.net中可以利用app_data文件夹来实现下载文件及图片文件的防盗链功能. 原理一:在asp教程.net中app_data文件夹包含应用程序的本地数据存储.它通常以文件(诸如microsoft access或microsoft sql server express数据库教程.xml文件.文本文件以及应用程序支持的任何其他文件)形式包含数据存储.该文件夹内容不由asp.net教程处理,也就是说浏览者无法直接访问此文件夹,因此我们可以利用这一权限特性来实现防盗链. 原理二:对来访请求地址进

apache防盗链(图片/文件)多种方法

如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改 找到:#LoadModule rewrite_module modules/mod_rewrite.so 把前面的 # 给去掉 找到等一个 AllowOverride None 改为 AllowOverride All 重启Apache2服务器 接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为  代码如下 复制代码 RewriteEngine on RewriteCond %{HTTP_

iis图片防盗链和文件下载资源防盗链

 代码如下 复制代码 RewriteCond Host: (.+) RewriteCond Referer: (?!http://1.*).* RewriteRule .*.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N] 排除性防盗链写法,我们让baidu,google等搜索引擎可以显示我的们图片    代码如下 复制代码 RewriteCond Host: (.+) RewriteCond Referer: (?!http://1.*).* Rewrit

PHP禁止图片文件的被盗链函数

1.假设充许连结图片的主机域名为:www.111cn.net 2.修改httpd.conf  SetEnvIfNoCase Referer "^http://www.111cn.net/" local_ref=1 <FilesMatch ".(gif|jpg)"> Order Allow,Deny Allow from env=local_ref </FilesMatch>    这个简单的应用不光可以解决图片盗链的问题,稍加修改还可以防止任

Nginx Web服务图片及软件下载防盗链功能的实现

图片及软件下载的防盗链功能一直是站长最头痛的问题!消耗服务器资源与带宽资源,而自身网站却没有获得任何的流量和IP,特别是迅雷盗链现象更为严重,吃光服务器事带宽!现针对Linux系统下的Nginx http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器环境中图片及软件下载防盗链功能的实现给大家抛砖引玉! web搭配环境下面利用HttpAccessKeyModule模块做Nginx防盗链的. 一:一般的防盗链如下: location

php图片文件 下载文件 防盗链设置方法

php防盗链  代码如下 复制代码 <?php session_start(); session_register('check'); $_SESSION['check']=true; ?> 检查session变数,判断是否造访首页.并且检查他的来源网页参考(HTTP_REFERER)是否来自本地网站的网页. 方法如下:  代码如下 复制代码 <?php session_start(); $refs = parse_url($_SERVER['HTTP_REFERER']); //分解参

浅谈如何通过.htaccess设置图片文件防盗链

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家好,我是湖南推的kiness.现在互联网上原创的内容被抄袭的现象实在是太普遍了,我们很多站长花了时间好不容易写一篇文章出来,在文章底部也加了版权.在被转载后,内容倒是基本保留了,版权文字确不见了,更有甚者,版权作者成了别人.这是让人十分窝火.气愤,自己辛辛苦苦写的东西就被人家该了几个 字,替换到链接,成了他人的"原创作品&quo

Asp.net 图片文件防盗链(尊重劳动成果)及BeginRequest事件学习_实用技巧

关于图片盗链这个问题,毕竟是自己的劳动成功,很多人不希望别人就那么轻易地偷走了. 这个功能在很多的论坛上都具有,可能是因为盗链的行为太多了吧 反盗链的程序其实很简单,熟悉ASP.NET 应用程序生命周期的话很容易就可以写一个,运用HttpModule在BeginRequest事件中拦截请求就ok了,剩下的工作就是过滤,再过滤! 如果不熟悉HttpModule的话,可以去MSDN上查阅,介绍非常详细,地址:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStu

使用FSO修改文件夹的名称实现文件转移防盗链_应用技巧

那天突然的一个灵感,是针对防盗链的 正常上传的文件,若被人盗链则增加了自己服务器的负担,上次164.cc就因此被挂 然后想想对策,目前各类防盗链程序也不少,不过使用也并不简单,还有就是不能免费-- 所以,只有自己先想办法.那么,现在看看标题,再想想防盗链,或许就有些眉目了 我可以不定时的修改上传文件所在的文件夹名称,而本站程序是动态获得文件夹名称,这样原先盗用本站文件的站点会因路径的错误而找不到文件,从而也就实现了防盗链. 那么,如何使用FSO修改文件夹的名称呢? 一个简单的函数: 复制代码 代