Nginx图片防盗链

防盗链概念

某网站的图片等资源只有指定一些站点或者IP可以访问,不允许其它站点访问。

通过Referer实现图片防盗链

打开nginx.conf,配置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    valid_referers none blocked server_names test.com;
    if ($invalid_referer){
    	return 403;
    	#rewrite ^/ https://www.baidu.com/img/bd_logo1.png;
    }
    expires 30d;
}

下面对这些配置进行解释。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

此行配置的作用是匹配以 gif/jpg/jpeg/png/bmp/swf 结尾的文件请求。

location /image/

另外也可以通过这样的配置来匹配指定目录。

valid_referers none | blocked | server_names | 字符串

此行配置的作用是识别 referer ,即可以正常获取资源文件的白名单域名

参数说明:

  • none 表示请求的referer为空,也就是直接访问图片资源。比如在浏览器中直接访问图片http://www.test.com/test.png时,请求的referer会为空。
  • blocked 表示referer的值被代理或者防火墙删除了。
  • server_names 表示referer来源包含当前的server_names,即location的父节点server节点的server_name的值。
  • 字符串 表示合法域名。比如test.com,配置后,来源是test.com的请求就会被认为是合法的请求。也可以使用正则表达式匹配合法请求来源, 如 ~\.test\.
if ($invalid_referer){
	return 403;
	#rewrite ^/ https://www.baidu.com/img/bd_logo1.png;
}

如果请求匹配以上的条件, $invalid_referer 变量的值为0;如果不匹配, $invalid_referer 变量的值为1,则会执行 if ($invalid_referer){...} 中的代码块。
return 403; 表示HTTP响应的状态码为 403 ,该状态码表示 Forbidden ,即服务器禁止了该请求。
也可以使用 rewrite ^/ https://www.baidu.com/img/bd_logo1.png; 语句。使用该语句表示,当请求不匹配时,将请求重定向到 https://www.baidu.com/img/bd_logo1.png ,响应的HTPP状态码为 302 ,该状态码表示 Moved Temporarily ,即临时重定向。
实现效果如下图所示:
通过Referer实现图片防盗链的实现效果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值