文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。
在当今流量徒增的互联网时代,很多业务场景都会涉及到高并发。这个时候接口进行限流是非常有必要的,而限流是Nginx最有用的特性之一,而且也是最容易被错误配置的特性之一。本篇文章主要讲讲Nginx如何对接口进行限流。
Nginx限流主要分为两种方式:
- 限制访问频率
- 限制并发连接数
为什么需要限流?开源人员可以通过限流限制访问速度来防止外部暴力扫描,或者减少密码被暴力破解的可能性。也可以解决流量突发问题(如线上活动导致访问量突增)。用一句话来概括就是说限流是用于保护服务器不会因为承受不住同一时刻的大量并发请求而宕机。接下来我们分别来看看Nginx的两种限流方式:
限制访问频率限制访问频率其实需要分成两种情况:正常情况下进行访问频率限制以及流量突发情况下进行访问频率限制。我们分别看看这两种情况下Nginx是如何进行处理的:
正常流量限制访问频率Nginx中使用ngxhttplimitreqmodule模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。在nginx.conf配置文件中可以使用limitreqzone命令及limit_req命令限制单个IP的请求处理频率。
我们可以先来看看这两个命令的语法结构:
- limitreqzone key zone rate
对于上面语法结