最新消息:

Nginx防盗链原理剖析及实现方式

Nginx 1058浏览 0评论

概念:

防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效。

可以大大减轻服务器及带宽压力。

工作原理:

通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。

一旦检测到来源不是本站即进行阻止或者返回指定的页面。

**签名工作原理:**

通过计算签名的方式,判断请求是否合法,否则返回拒绝信息。

Referer:

Nginx 模块 ngx_http_referer_module 用于阻挡来源非法的域名请求。

Nginx指令 valid_referers,全局变量 $invalid_referer

防盗链实现方法:

Referer:

valid_referers none | blocked | server_names | string …;

`nginx -V` 查看是否安装了valid_referers模块

1、 `none` 表示 Referer 为空的情况

2、`blocked`: "Referer" 来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以 http:// 或者 https:// 开头。

3、server_names: "Referer" 来源头部包含当前的server_names

location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$ //此处也可以指定目录如 location /images/
{
	valid_referers none blocked wecot.cn *.wecot.cn;//如果非法 返回 1
	//非法时执行
	if ($invalid_referer) //注意:if和后面括号以及变量等号这些元素都要有空格
	{
		#return 403;
		rewrite ^/ https://www.wecot.cn/403.jpg;
	}
}

配置好后重启nginx ,重载配置即可。

以上方式不能从根本上解决盗链问题,那么如何从根本上解决盗链问题呢?

下面介绍 签名认证方式:

加密签名:使用第三方模块HttpAccessKeyModule实现Nginx防盗链。

accesskey on | off 模块开关

accesskey_hashmethod md5 | sha-1 签名加密方式

accesskey_arg GET 参数名称

accesskey_signature 加密规则

实现例子:

location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$ //此处也可以指定目录如 location /images/
{
	accesskey on;
	accesskey_hashmethod md5;
	accesskey_arg "key";
	accesskey_signature "mypass$remote_addr";
}

说明:&key=md5('mypass'.$remote_addr); //$remote_addr = $_SERVER['REMOTE_ADDR'];

转载请注明:微刻 blog.wecot.cn » Nginx防盗链原理剖析及实现方式

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址