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

    server {
        location / {
            limit_req zone=mylimit burst=5;
            proxy_pass http://my_upstream;
        }
    }
}
  • 解释:

    limit_req_zone: 定义一个全局限制区域mylimit,大小为10MB,允许的平均请求速率为每秒1个请求。
    binary_remote_addr: 使用客户端IP作为key。
    zone=mylimit:10m: 指定区域名称为mylimit,并设置大小为10MB。
    rate=1r/s: 设置允许的平均请求速率。
    limit_req zone=mylimit: 应用请求限制。
    burst=5: 允许的突发请求数,超过这个数的请求可能会被延迟处理或者返回错误。
    proxy_pass: 将请求转发到后端服务。
    这个配置将限制每个IP地址对指定location的请求速率,超过限制的请求会返回状态码503。