nginx if判断_如何用nginx实现防盗链?保护网站图片、视频。

什么是防盗链?

有时候,当我们在网站上浏览图片时会遇到图片打不开,并看到提示:“403权限禁止”。这可能是正在浏览的这个网站用到的图片在盗用别的网站图片,而被盗用的网站采用了防盗链技术。

76a788a854610eb4760f2dda7dc40b17.png

这个功能是很有用的,特别是对于图片站或视频站。

今天本文就聊聊如何实现防盗链。

以nginx为例,如何实现防盗链?

5d82efd90170a537bc9f90064ad62fd8.png

nginx referer指令

nginx有个模块模块:ngx_http_referer_module。

通常用于阻挡来源非法的域名请求。用nginx防盗链,就要用到它。

脚本如下

server{ listen 80; server_name www.sharewaf.com; index index.html index.htm index.php; root /data/www; # 定义访问日志的路径和格式 access_log /tmp/nginx_access.log main; # 不记录静态文件的的访问日志 location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$ { access_log off; expires 10d; valid_referers none blocked *.bing.com *.baidu.com *.google.com; if ($invalid_referer) { rewrite ^/ http://www.sharewaf.com/; #return 403; } }}
  • location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2) 表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
  • valid_referers none blocked 表示对来路进行判断 if{ }里面内容的意思是,如果来路不是指定来路域名,如果来路不是指定来路就跳转到指定页面,当然直接返回403也是可以的。

另外需要知道的是:伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止部分简单的非法请求,如果要实现高强度的防盗链,还是得用专业的WAF(web应用防火墙),如:ShareWAF

aea0cee1712ae4fd269e45f433a15f40.png

另外要注意,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求,否则会阻挡掉很多合法访问。

其它还可能能用于nginx防盗链的指令:

  • 语法: referer_hash_bucket_size size;
  • 默认值: referer_hash_bucket_size 64;
  • 配置段: server, location

最后,配置文件设置完成别忘记重启nginx生效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值