码迷,mamicode.com
首页 > 其他好文 > 详细

高并发之流量优化

时间:2019-04-23 17:43:06      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:三方   原理   hash   资源   location   ngx   image   gif   显示   

工作原理

1.通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源不是本站即进行阻止或者返回指定的页面。

2.通过计算签名的方式,判断请求是否合法,如果合法则显示,否则返回错误信息。

Referer

Nginx模块ngx-http-referer module用于当来源非法的域名请求。
Nginx指令valid_referers,全局变量$invalid_referer

valid_referers none|blocked丨server-names|string
none://“Referer"来源头部为空的情况
blocked://“Referer"来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头
server-names://‘Referer"来源头部包含当前的server_names

针对文件类型进行防盗链

location~.*\.(gifljpglpnglflvlswflrarlzip)$
{
    valid_referers none blocked baidu.com *.baidu.com
    if($invalid_referer)
    {
        #return 403;
        rewrite ^/http://www.baidu.com/403.jpg,
    }
}

针对目录的防盗链

location /images/
{
    valid_referers none blocked baidu.com *.baidu.com
        if($invalid_referer){
        #return403;
        rewrite ^/http://www.imooc.com/403.jpg,
    }
}

传统防盗链遇到的问题:伪造Referer,可以用加密签名解决

加密签名

使用第三方模RHttpAccessKeyModule实现Nginx防盗链
accesskey onloff 模块开关
accesskey_hashmethod md5|sha-l 签名加密方式
accesskey_arg GET参数名称
accesskey_signature加密规则

防盗链的实现方法

location~.*\.(gifljpglpnglflvlswflrarlzip)$
{
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key"
accesskey_signature "mypass$remote_addr"
}

// md5加密签名 (jason.ip) 
$sign = md5( 'jason' . $SERVER['REMOTE_ADDR']);
echo '<img src="./logo_new.png?key='.$sign.'">'; 

高并发之流量优化

标签:三方   原理   hash   资源   location   ngx   image   gif   显示   

原文地址:https://www.cnblogs.com/qinsilandiao/p/10757440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!