介绍

nginx limit_req和limit_conn_zone两个模块可以有效的帮助你屏蔽一部分恶意请求··

nginx限制请求频率
nginx limit_req用于每个IP的请求频··
超出阈值的请求默认将返··503 (Service Temporarily Unavailable)
rate的单位分··"r/s","r/m"
域声明语法: limit_req_zone key zone=name:size rate=rate;
域调用语法:limit_req zone=name [burst=number] [nodelay];

··1··
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;     #以··$binary_remote_addr“为辨识获取钥匙,定义one为限值域··10m为钥匙桶大小··10兆)··1r/s··1次每··
server {                                 #上面定义就是同一IP的用户每秒仅能请求一次失败返··503
    location /search/ {
        limit_req_status 599;              #指定受限后请求返回httpcode 599
        limit_req zone=one burst=5 nodelay;                         #调用one域,burst=5··5个特权令牌(特权令牌拥有者可以直接请求服务)  超过503,nodelay超过令牌数不等待令牌发··
    }                                             #如果不调用nodelay用户会一直等到服务正常相··



    ··2··
    limit_req_zone $server_name zone=perserver:10m rate=10r/s;     #这次就是根据用户访问域名限制访问频率
    server {
        limit_req_log_level  error;                                   #指定受限制请求日志级别error
        limit_req zone=perip burst=5 nodelay;            #如果访问域名$server_name超过10+5··/s就会直接503
    }

限制连接··

    limit_conn_zone key zone=name:size; #必须在http级别配置
    limit_conn_status code;        #限制报错httpcode
    limit_conn_log_level info | notice | warn | error; 首先请求日志级别
    limit_zone name $variable size; #必须在http级别配置


    http {
        limit_conn_zone $binary_remote_addr zone=addr:10m;   #根据用户ip限制连接··
             limit_conn_zone $server_name zone=perserver:10m;  #根据用户请求域名限制连接··
    ...
    server {
    ...
    location /download/ {
                limit_conn addr 1;                                      #限制同时请求··/download/“目录的连接只有一··
            }

nginx教程

第一·· nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone