当前位置:首页 > nginx > 正文

nginx如何做限流(网站nginx什么意思)

  • nginx
  • 2024-04-01 21:33:17
  • 8094
## Nginx 限流
通过限制请求的速率或并发数,Nginx 限流可以控制对服务器的访问量,从而保护服务免受过载或攻击。
### 要素:
- Rate Limiting (速率限制):限制特定时间窗口内允许的请求数。
- Concurrent Connections (并发连接):限制与服务器建立的最大并发连接数。
- Limiting by Client IP (按客户端 IP 限流):根据客户端 IP 地址限制请求。
- Limiting by URI (按 URI 限流):根据请求的 URI 路径限制请求。
- Limiting by Headers (按标头限流):根据请求标头中的特定值限制请求。
- Limiting by Cookies (按 Cookie 限流):根据请求中的 cookie 值限制请求。
### 使用示例:
- 限制每秒请求数:
limit_req_zone $binary_remote_addr zone=myrate:10m rate=1r/s;
location / {
limit_req zone=myrate;
}
- 限制来自特定 IP 的并发连接:
limit_conn_zone $binary_remote_addr zone=myconn:10m max_fails=1;
location / {
limit_conn zone=myconn concurrency=2;
}
- 根据 URI 路径限制请求:
location ~ /api/v1 {
limit_req_zone $binary_remote_addr zone=apiv1:10m rate=10r/s;
limit_req zone=apiv1;
}
- 根据请求标头中的 User-Agent 限制请求:
location / {
set $limit_key "$http_user_agent";
limit_req_zone $limit_key zone=useragent:10m rate=1r/s;
limit_req zone=useragent;
}