zoukankan      html  css  js  c++  java
  • 高并发之流量优化

    工作原理

    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.'">'; 
    
  • 相关阅读:
    VS2019添加引用,对COM组件的调用错误
    ArcPy批量选择指定属性的要素
    使用ArcMap批量处理线悬挂问题
    Springboot 允许跨域的方法
    博客搬至CSDN
    Java项目中修复Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)详细说明
    ES index type 概述
    为什么有些人钱花了而赚不到钱呢?
    后台管理系统模板
    resolv.conf search openstacklocal novalocal
  • 原文地址:https://www.cnblogs.com/qinsilandiao/p/10757440.html
Copyright © 2011-2022 走看看