Nginx 网关限流设置
Nginx 网关限流通常通过以下要素配置:
速率限制(limit_rate)
- 设置特定时间窗口内请求的最大数量。
- 例如:limit_rate 100r/s; (每秒最多 100 个请求)
令牌桶(ngx_http_limit_conn_module)
- 按时间生成一定数量的令牌,每个请求消耗一个令牌。
- 例如:limit_conn_zone $binary_remote_addr zone=myzone:10m; (每 10 分钟生成 10 个令牌)
漏桶(ngx_http_limit_req_module)
- 接收请求并将其存储在队列中,超出队列限制的请求将被丢弃。
- 例如:limit_req_zone $binary_remote_addr zone=myzone:10m rate=3r/s; (每秒最多 3 个请求)
白名单和黑名单
- 可以通过 IP 地址或其他条件将某些 IP 列入白名单或黑名单,以绕过限流规则。
- 例如:limit_except remote_addr 192.168.1.1; (白名单 192.168.1.1)
负载平衡
- 可以使用 Nginx 负载均衡器将请求分发到后端服务器,并设置每个服务器的限流规则。
- 例如:server { listen 80; server_name example.com; location / { proxy_pass https://backend1; limit_rate 50r/s; } } (对 backend1 应用 50r/s 的速率限制)