跳转至

04 nginx添加接口访问频率限制

nginx 添加接口访问频率限制

部分接口如果出现较高访问频率, 可能会影响到其他服务的访问, 为此; 可以在nginx 的配置中可以使用ngx_http_limit_req_module模块对部分接口进行限速

配置方式

配置示例

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        location / {
            limit_req zone=one burst=5;
            # 其他配置项...
        }
    }
}
...
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
...
...

limit_req zone=one burst=5;
...

其中:

  • limit_req_zone: 表示使用ngx_http_limit_req_module 模块
  • $binary_remote_addr: 为nginx 的内置变量, 表示请求的客户端的IP
  • zone=one:10m : 表示创建一个名字为one 的限制区域, 分配配one区域的内存大小为10m
  • rate=10r/s : 表示访问速率, 此配置为每秒钟最多访问10次
  • limit_req : 在location 引用前面配置的限制区域, 表示此类匹配的接口都会应用限速
  • zone=one : 指定限制区域
  • burst=5: 表示突变值为5, 在访问中如果达到10次每秒, 可以额外突发五次