美文网首页
nginx服务器请求限制模块(ngx_http_limit_re

nginx服务器请求限制模块(ngx_http_limit_re

作者: usual2970 | 来源:发表于2017-02-24 10:23 被阅读0次

nginx 可以使用ngx_http_limit_req对服务器资源请求进行限制,这对使用ab等工具恶意压测服务器和cc(challenge Collapsar)会有一定的防范作用。
该模块使用漏斗算法(Leaky Bucket),该算法有两种处理方式Traffic Shaping和Traffic Policing

在桶满水之后,常见的两种处理方式为:
1.暂时拦截住上方水的向下流动,等待桶中的一部分水漏走后,再放行上方水。
2.溢出的上方水直接抛弃。

将水看作网络通信中数据包的抽象,则方式1起到的效果称为Traffic Shaping,方式2起到的效果称为Traffic Policing
由此可见,Traffic Shaping的核心理念是"等待",Traffic Policing的核心理念是"丢弃"。它们是两种常见的流速控制方法

nginx中该模块的使用配置示例

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,如果没有设置,则所有请求会等待排队

下面这个配置可以限制特定UA(比如搜索引擎)的访问

limit_req_zone  $anti_spider  zone=one:10m   rate=10r/s;
limit_req zone=one burst=100 nodelay;
if ($http_user_agent ~* "googlebot|bingbot|Feedfetcher-Google") {
    set $anti_spider $http_user_agent;
}

相关文章

  • nginx服务器模块

    nginx服务器请求限制模块 Nginx限制IP并发数与下载速度 nginx实现防盗链 http://www.ji...

  • nginx服务器请求限制模块(ngx_http_limit_re

    nginx 可以使用ngx_http_limit_req对服务器资源请求进行限制,这对使用ab等工具恶意压测服务器...

  • 基于Nginx实现访问控制、连接限制

    0 前言 Nginx自带的模块支持对并发请求数进行限制, 还有对请求来源进行限制。可以用来防止DDOS攻击。阅读本...

  • nginx反向代理tcp/udp

    nginx反向代理tcp/udp请求实现映射远端服务器 安装nginx,添加stram模块支持yum和rpm安装默...

  • 9. Nginx Rewrite 功能

    Nginx服务器利用ngx_http_rewrite_module模块解析和处理rewrite请求, 此功能依靠P...

  • Nginx服务器架构初探

    Nginx服务器架构初探 Nginx模块化结构 核心模块,是指Nginx服务器正常运行必不可少的模块,它们提供了N...

  • nginx优化

    Nginx gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送到用户客户端之前,Nginx服务器会根据...

  • nginx 请求限制

    连接频率限制 - limit_conn_module请求频率限制 - limit_req_module H...

  • nginx学习笔记(二)

    本篇内容:nginx原理分析:模块化 请求处理 事件驱动模型 设计架构 一、nginx的模块 二、请求处理方式 n...

  • Nginx的limit限制访问模块

    Nginx 的 limit 模块用于限制 Nginx 的访问。 limit 模块包含有两个部分: limit_co...

网友评论

      本文标题:nginx服务器请求限制模块(ngx_http_limit_re

      本文链接:https://www.haomeiwen.com/subject/lktiwttx.html