Nginx-利用Referer防盗链

面的内容包括:
1 Nginx Referer 模块
2 valid_referers 指令
3 测试Nginx 防盗链

1 Nginx Referer模块
当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。
这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,可以认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。

2 valid_referers 指令
语法:valid_referers [none|blocked|server_names] …
默认值:no
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1
可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1。
参数可以使如下形式:
none 意为不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符

3 测试
3.1 正常的Referer
firefox 浏览器(get)http://bbs.test.com/uc_server/images/noavatar_small.gif

3.1.1 请求头信息原始头信息
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding    gzip, deflate
Accept-Language    zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection    keep-alive
Host    bbs.test.com
User-Agent    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1

3.1.2 nginx 日志格式

3.1.3 nginx 日志referer字段
10.0.100.82 - - [24/Aug/2014:10:50:00 +0800] "GET / HTTP/1.1" 200 6166 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" 192.168.4.33  #注意:"-" 表示referer空白,这里直接在浏览器打开一个图片

3.2. 使用Referer防盗链
3.2.1 nginx 代码

3.2.2 firefox 浏览器 URL
URL:http://192.168.57.75/index.html

注意:index.html 包含noavatar_small.gif

3.2.3 请求头信息原始头信息
Accept    image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding    gzip, deflate
Accept-Language    zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection    keep-alive
Host    bbs.test.com
Referer    http://192.168.57.75/
User-Agent    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1

3.2.4 nginx 日志referer字段
192.168.4.33 - - [24/Aug/2014:10:55:05 +0800] "GET /uc_server/images/noavatar_small.gif HTTP/1.1" 403 162 "http://192.168.57.75/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" -

转载自:http://dngood.blog.51cto.com/446195/1033362

时间: 2024-10-01 03:25:56

Nginx-利用Referer防盗链的相关文章

[Java][Web]利用 referer 防盗链

String referer = request.getHeader("referer"); if(referer == null || !referer.startsWith("http://localhost")){ response.sendRedirect("/day06/index.html"); // 发现不是正常 return; } // 非盗链才能往下走. response.getWriter().write(data);

Linux之nginx优化与防盗链

Linux之nginx优化与防盗链 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因

8. Nginx资源的防盗链

valid_referers 语法使用说明: http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; } valid_refe

防盗链Nginx设置图片防盗链,设置无效的请仔细看红字

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

nginx secure_link下载防盗链

下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是nginx的话,使用secure link完美解决这个问题,远离迅雷.本文仅用于下载服务器,不适用于图片防盗链. 1. 安装nginx 默认情况下nginx不会安装secure_link模块,需要手动指定,配置参数如下 # ./configure --with-http_secure_li

nginx服务器图片防盗链的方法

nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuchengxian.com www.shuchengxian.com; if ($invalid_referer) { rewrite ^/ http://www.shuchengxian.cn/404.jpg; } }</pre>代码解释: <pre>//其中“gif|jpg|jpeg|p

Nginx实现图片防盗链(referer指令)

什么是图片盗链   每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片. 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上, 而是直接就用我们的,图片地址,来请求到我们的服务器来拿图片,流量产生在我们这边. referer referer指令通过检测访问图片的来源,来做出一些控制. 图片访问的来源 通过谷歌/百度访问 通过浏览器直接访问 本站点的访问 来自非法的域名访问 referer nginx 模块 ngx_http_refe

Nginx优化与防盗链

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.所以必须使

Nginx服务之防盗链功能

Nginx防盗链 一.原理 二.配置指令 三.实例配置 一.原理 盗链是一种损害原有网站合法利益,给原网站所在服务器造成额外负担的非法行为.要采取防盗链的措施,首先需要了解盗链的实现原理. 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端.比如在请求一个网页时,首先会传回该网页的文本内容,当客户端浏览器在解析文本的过程中发现有图片存在时,会再次向服务器发起对该图片资源的请求,服务器将存储的图片资源再发送给客户端.在这个过程中,如果该服务器上