nginx可以针对不同域名/路由限流吗?

nginx好像只可以针对整体请求限流?
能针对不同的后端服务进行限流吗?

阅读 4.3k
2 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题