美文网首页
nginx服务器模块

nginx服务器模块

作者: 散装咖啡 | 来源:发表于2017-09-24 22:51 被阅读20次

    nginx服务器请求限制模块

     #定义一个名为one的limit_req_zone用来存储session,大小是10M内存,
    limit_zone one  $binary_remote_addr  10m;
    
    以$binary_remote_addr 为key,限制平均每秒的请求为20个,1M能存储16000个状态,rete的值必须为整数,如果限制两秒钟一个请求,可以设置成30r/m
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    server {
      location /search/ {
         limit_req zone=one burst=5 nodelay;
       }
    
    第一段配置
    第一个参数:$binary_remote_addr 表示通过 remote_addr 这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址
    第二个参数:zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息
    第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的
    
    第二段配置
    第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应
    第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内
    第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队
    

    Nginx限制IP并发数与下载速度

    limit_zone one $remote_addr 10m;
    location /download { 
    限制每个IP只能发起一个并发连接
    limit_conn   one 1;  
    如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速
    limit_rate_after 10m;  
    限速 128k
    limit_rate 128k; 
     }  
    

    nginx实现防盗链

    valid_referers none | blocked | server_names;
    所有来至ttlsa.com和域名中包含google和baidu的站点都可以访问到当前站点的图片,
    如果来源域名不在这个列表中,那么$invalid_referer等于1
    location ~* \.(gif|jpg|png|bmp)$ {
        valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
        if ($invalid_referer) {
            return 403;
            #rewrite ^/ http://www.ttlsa.com/403.jpg;
        }
    }
    

    http://www.jianshu.com/p/f9888812e89c
    http://www.jb51.net/article/45643.htm
    http://www.ttlsa.com/nginx/nginx-referer/

    相关文章

      网友评论

          本文标题:nginx服务器模块

          本文链接:https://www.haomeiwen.com/subject/oyilextx.html