【Nginx实战】Nginx接入层限流

167 阅读1分钟

      对于Nginx接入层限流通常可以使用 Nginx自带的两个模块:

      1、连接数限流模块:ngx_http_limit_conn_module

      可以对某个key,如按照IP、域名对应的总的网络连接数进行限流。

  • 示例 1.1 :按照IP限制并发连接数限流
http {
    ...
    limit_conn_zone $binary_remote_addr zone=perip:10m; #配置限流key与其存放信息的共享内存大小($binary_remote_addr为IP限流,$server_name为域名限流)
    limit_conn_log_level error; #配置被限流后日志级别
    limit_conn_status 503; #配置被限流后返回的状态码
    ...
    server {
        ...
        #在要限流的location中添加限流逻辑
        location /
        {
            limit_conn perip 2; #存放key和计数器的共享内存区域 和 指定key的最大连接数
        }
    }
    ...
    
    access_log  /www/wwwlogs/oyhdo.com.log;
    error_log  /www/wwwlogs/oyhdo.com.error.log;
}

      以上配置表示:限制每个IP最大并发连接数为2。

      ab测试:并发数5,总请求数5,命令如下:

ab -n 5 -c 5 https://oyhdo.com/