1.1 模块

  • limit_req_zone模块,限制访问请求数,限制范围为IP地址
  • limit_conn_zone模块,限制访问连接数,限制范围为IP地址
  • limit_rate模块,限制文件下载速度,可与limit_rate_after模块搭配使用
  • limit_rate_after模块,下载文件达到限定值后开始限速

1.2 配置样例及说明

http {
limit_req_zone  $binary_remote_addr zone=limitreq:10m rate=150r/s;  
# 定义limit_req_zone组名为limitreq,限制为每秒150次请求/IP,10m是会话状态储存的空间存储IP信息
limit_conn_zone $binary_remote_addr zone=limitconn:10m;             
# 定义limit_conn_zone组史为limitconn,10m是会话状态储存的空间存储IP信息

    location ~ /application {
        ......
        limit_req zone=limitreq;    # 访问/application请求数限制
        limit_conn limitconn 50;    # 访问/application连接数限制,每IP限制50连接数
        limit_rate_after 10m;       # 下载文件10M后开始限速
        limit_rate 512k;            # 下载限速512k
        ......
    }
}

1.3 Nginx日志信息
limit_req_zonet和limit_conn_zone模块在测试触发时nginx accesslog日志返回503代码,error日志返回信息分另如下

  • limit_req_zone模块触发后error日志信息
    [error] 15467#15467: *15590284 limiting requests, excess: 5.100 by zone "limitreq", client: IP, server: IP, request: "POST URL HTTP/1.1", host: "IP"
  • limit_conn_zone模块触发后error日志信息
    [error] 15467#15467: *15590167 limiting connections by zone "limitconn", client: IP, server: IP, request: "POST URL HTTP/1.1", host: "IP"