nginx 防刷limit 设置白名单(geo模块)

摘要:nginx防刷limit 设置白名单(geo模块)...

作者:LoveCode标签:nginx,防刷,limit,设置白名单,geo模块

nginx防刷limit 设置白名单(geo模块)

Nginx Geo 模块配置范例:

http {
    includeconf/mime.types;
    default_typeapplication/octet-stream;
    
    geo$geo {
        default     default;
        218.30.115.0/24           china_telecom;
        202.106.182.0/24         china_unicom;
        202.205.3.0/24             cernet;
    }
    
    Upstream default {
        Server192.168.0.2:8080;
    }
    
    Upstream china_telecom {
        Server192.168.0.3:8080;
    }
    
    Upstream china_unicom {
        Server192.168.0.4:8080;
    }
    
    Upstream cernet {
        Server192.168.0.5:8080;
    }
    
    Server {
        listen 80;
        server_name localhost;
        location/ {
            proxy_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For
            $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout http_503 http_502http_504;
            proxy_pass http://$geo;
            access_log  /home/nginx_log/member_acc_log main;
            error_log/home/nginx_log/member_err_log;
        }
    }
}

geo 指令 default:任何ip地址,相当于0.0.0.0/0

ranges:支持区间形式来指定ip段,该指令必须卸载geo配置环境的第一行。如:127.0.0.0-127.0.0.255

注:官方nginx 未找到白名单功能,只是全局负载均衡


Tengine nginx geo 白名单配置:

http {
  include       mime.types;
  default_type application/octet-stream;
  limit_req_zone $binary_remote_addr zone=one:3m rate=1r/m;
  limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/m;
  limit_req_zone $binary_remote_addr $request_uri zone=three:3m rate=1r/m;
 
  geo $white_ip {
      #ranges;
      default 0;
      10.0.0.0/8 1;
      192.168.0.0/16 2;
   }
  sendfile        on;
   keepalive_timeout  65;
 
  server {
      listen       80;
      server_name  localhost;
      location / {
          root   html;
          limit_req_whitelist geo_var_name=white_ip geo_var_value=1;
          limit_req_whitelist geo_var_name=white_ip geo_var_value=2;
          limit_req zone=one burst=2 nodelay;
          limit_req zone=two burst=2 nodelay;
          limit_req zone=three burst=2 nodelay;
          index  index.html index.htm;
      }
  }
}
   表示白名单,要协同geo模块进行工作,其中geo_var_name表示geo模块设置的变量名,而geo_var_value表示geo模块设置的变量值。比如:
   geo $white_ip {
       ranges;
       default 0;
       127.0.0.1-127.0.0.255 1;
   }
 
   limit_req_whitelist geo_var_name=white_ipgeo_var_value=1;

上面表示ip127.0.0.1-127.0.0.255这个区间都会跳过limit_req的处理。

CopyRight © 2017 荒山本的官方网站 粤ICP备16049175号 All Right Service 网站地图(xml) 网站地图(html)