Nginx 防盗链设置

何谓‘盗链’

此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。

比较明显的是图片资源,自己的服务器不存储图片资源,而使用别人的图片资源,这样无需承担图片的存储跟流量所产生的费用。总之,是非常无耻的行径。

如何防盗链

要实现防盗链,需要了解HTTP协议中的请求头部 Referer 头域和采用 URL 格式表示访问当前网页或者文件的源地址。通过该头域的值,我们可以检测到访问目标资源的源地址,即我们知道是谁在访问我们的资源。这样,如果检测到 Referer 头域中的值并不是自己站点的URL,就采取阻止措施,实现防盗链。

Nginx 指令 valid_referers

Nginx 配置中有一个指令 valid_referers ,用来获取 Referer 头域中的值,并且根据该值的情况给 Nginx 全局变量 $invalid_referer 变量将会被赋值为 1。valid_referers 指令的语法为:
valid_referers none | blocked | server_names | strings ....;

  • none, 检测 Referer 头域不存在的情况。
  • blocked,检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 “http://” 或 “https://” 开头。
  • server_names ,设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。

有了 valid_referers 指令和 $invalid_referer 变量,就能通过 Rewrite 功能来实现防盗链。有两种实现方案,一种是根据请求资源的类型,一种是根据请求目录。以请求资源类型为例子:

location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|jpeg|png|swf|flv)$ {
    valid_referers none blocked *.myweb.com;
    if ($invalid_referer) {
        rewrite ^/ http://www.myweb.com/logo.gif;
        #return 403;
    }
}
时间: 2024-09-20 07:49:28

Nginx 防盗链设置的相关文章

nginx中nginx防盗链设置和重定向规则

rewrite命令 nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下: rewrite 正则表达式 替换目标 flag标记 flag标记可以用以下几种格式: last – 基本上都用这个Flag. break – 中止Rewirte,不在继续匹配 redirect – 返回临时重定向的HTTP状态302 permanent

Nginx防盗链的3种方法_nginx

一:一般的防盗链如下: 复制代码 代码如下: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.jb51.net jb51.net ; if ($invalid_referer) { rewrite ^/ http://www.jb51.net/retrun.html; #return 403; } } 第一行:gif|jpg|png|swf|flv 表示对gif.jpg.png.swf.flv后缀的文件

Nginx中图片防盗链设置方法详解

由于有时候一些其他网站会调用本站的图片,nginx本身是可以屏蔽其他网站调用本站图片,方式如下: 根据后缀: location ~ \.(gif|jpg|png|swf|flv|bmp)$ {     valid_referers none blocked *. 111cn.net;     if ($invalid_referer) {     return 404; } } 根据目录:  location /images/ {   root /web/site/www/;   valid_r

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   允许的网

Nginx模块学习之————accesskey权限模块使用(Nginx防盗链详细解说),防止别人下载文件和图片

nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链 1.具体安装教程:http://www.cnblogs.com/tinywan/p/5983694.html/ 2.Nginx配置文件 location /hls { alias /tmp/hls; }location /download { accesskey on; accesskey_hashmethod md5; accesskey_arg "key"; #accesskey_s

Windows系统中IIS防盗链设置详细介绍

首页我们安装一个组件:isapi.msi 安装完后,对软件安装目录的IIS_WGP组的读写权限(重要,如果不设置安装完后你的网站就会直接Service Unavailable,无法访问). 假如你的安装目录是D:Program FilesHeliconISAPI_Rewrite(默认安装目录是Program FilesHeliconISAPI_Rewrite,我们可以先建立),右击ISAPI_Rewrite,选择"属性"->"安 全"->"添加

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

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

求助!关于.Net MVC中伪静态和防盗链设置的一些问题

问题描述 最近公司项目有一个需求是这样的,先说一下,项目用的是纯MongoDB,需求就是用户上传的附件要求在数据库里备份一份,本地静态文件夹中存一份,如果静态文件被人误删,可以通过数据库恢复到本地静态地址.一看到这个需求我就想起了利用防盗链的做法来实现"浏览器输入静态文件地址,后端拦截静态请求,先做判断处理,如果文件被误删,则先恢复后再响应,从而确保静态文件(图片)永远不会丢失",于是我百度了一下找到了好几种做法,都试了,都不行.先说第一种,自己重写一个IRouteHandler,然后

Nginx防盗链配置具体方法详解

一:一般的防盗链如下:  代码如下 复制代码 location ~* .(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.111cn.net ; if ($invalid_referer) { rewrite ^/ http://www.111cn.net; #return 404; } } 第一行:gif|jpg|png|swf|flv 表示对gif.jpg.png.swf.flv后缀的文件实行防盗链 第二行: 表示对www.in