Nginx静态资源防盗链

一、前言

为了防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种:

1:水印,品牌宣传,前提是你的带宽,服务器足够
2:防火墙,直接控制,前提是你知道IP来源
3:防盗链策略下面的方法是直接给予404的错误提示

二、Nginx静态资源防盗链设置

该功能属于ngx_http_referer_module模块,其用于阻止对“ Referer”标头字段中具有无效值的请求的站点访问。应当记住,使用适当的“ Referer”字段值来构造请求非常容易,因此,此模块的预期目的不是彻底阻止此类请求,而是阻止常规浏览器发送的大量请求。还应考虑到常规浏览器甚至对于有效请求也可能不会发送“ Referer”字段。

HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理,
例如防止未经允许的网站盗链图片、文件等。因此HTTP Referer头信息是可以通过程序来伪装生成的,所以通过Referer信息防盗链并非100%可靠,但是,它能够限制大部分的盗链

情况。

指令:referer_hash_bucket_size size;可存在位置:server, location
默认:referer_hash_bucket_size 64;
作用:设置有效引荐来源哈希表的存储桶大小


指令:referer_hash_max_size size;可存在位置:server, location
默认:referer_hash_max_size 2048;
作用:设置size有效引用哈希表的最大值

指令:valid_referers  none | blocked | server_names | string ...;可存在位置:server, location
默认:referer_hash_max_size 2048;
none:意思是不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked:意为有referer但是被防火墙或者是代理给去除了
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
作用:该指令会根据referer Header头的内容分配一个值为01给变量$invalid_referer。如果referer Header头不符合valid_referers指令设置的有效Referer,变量$invalid_referer将被设置为1.

变量:$invalid_referer
作用:空字符串,如果“ Referer”请求标头字段值被视为有效,则为 “ 1”。

案例

location ~* ^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
    valid_referers none blocked  www.benet.com benet.com;
    if ($invalid_referer) {
       return 403;
     }
 }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值