nginx 简单实现防盗链-保护自己的网站

发布时间:2018-01-10 18:34:16编辑:丝画阁阅读(592)

我们经常会看到在浏览某一图片时会弹出一“403权限禁止”错误,这说明有可能正在浏览的这个网站用到的图片在盗用别的网站图片,而被盗用的网站采用了防盗链技术。那么怎样才能不让自己的网站受害呢?

nginx 简单实现防盗链-保护自己的网站

nginx referer指令简介

nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求.我们应该牢记,伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求.我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求.

首先,我们来看下nginx如何设置防盗链

cd /usr/local/nginx/conf/vhostsvim test.conf
server{ listen 80; server_name www.nbwiki.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 *.nbwiki.com *.baidu.com *.google.com; if ($invalid_referer) { rewrite ^/ http://www.nbwiki.com/retrun.html; #return 403; } }}
  • location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2) 表示对gif、jpg、png、swf、flv后缀的文件实行防盗链

  • valid_referers none blocked 表示对 www.nbwiki.com 这2个来路进行判断 if{ }里面内容的意思是,如果来路不是指定来路域名,如果来路不是指定来路就跳转到 http://www.nbwikicom/retrun.html 页面,当然直接返回403也是可以的。

用curl去检测那些invalid_referer能否访问我们网站:

curl -e 可以用来指定referer

curl -e 'http://www.xxx.com/2222' -x127.0.0.1:80 'http://www.nbwiki.com/static/im/test.jpg' -IHTTP/1.1 403 ForbiddenServer: nginxDate: Mon, 22 Aug 2016 08:15:59 GMTContent-Type: text/htmlContent-Length: 168Connection: keep-alive

nginx防盗链指令

  • 语法: referer_hash_bucket_size size;

  • 默认值: referer_hash_bucket_size 64;

  • 配置段: server, location

  • 这个指令在nginx 1.0.5中开始出现.

  • Sets the bucket size for the valid referers hash tables. The details of setting up hash tables are provided in a separate document.

图片使用来源头部做防盗链是最合理的. 简单、实用。但是没有办法防采集。如果想做文件的防盗链请参考前面章节讲到的使用secure link文件防盗链文章.

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

关键字