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。