nginx好像只可以针对整体请求限流?
能针对不同的后端服务进行限流吗?
Nginx官方版本限制IP的连接和并发分别有两个模块:
limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"。
limit_req_conn 用来限制同一时间连接数,即并发限制。
举一个例子,你自己理解下:
一次只允许每个IP地址一个连接。
limit_conn_zone?$binary_remote_addr?zone=perip:10m;????
limit_conn_zone?$server_name?zone=perserver:10m;????
server?{????????
...????????
limit_conn?perip?10;????????
limit_conn?perserver?100;????
}
###可以啊,同样的配置语句,写在http那里就是全局生效,写在server那里就是当前域名生效,写在location那里就是当前路由生效。
具体限流可以用 limit_conn perip x
或者 limit_conn perserver x
。