nginx服务器模块

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服务器模块)