nginx限流配置

环境ubuntu 20.04

限流包括限制并发数以及限制连接频率

限制并发数

涉及的参数为以下两个:

  • limit_conn_zone
  • limit_conn

其中limit_conn_zone只能出现在http全局块中
例:

# /etc/nginx/nginx.conf
http {
	...
	limit_conn_zone $binary_remote_addr zone=addr:10m;
	...
}

说明:设置一个10m的容器,按照32bytes/session, 可以处理320000个session

# /etc/nginx/sites-enabled/default
server {
	...
    location / {
    	...
    	limit_conn addr 1;
		...
    }
}

说明:限制每个IP只能发起一个并发连接

参考:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

限制连接频率

涉及的参数为以下两个:

  • limit_req_zone
  • limit_req

其中limit_req_zone只能出现在http全局块中
例:

# /etc/nginx/nginx.conf
http {
	...
	limit_req_zone  $binary_remote_addr zone=one:10m rate=5r/s;
	...
}

说明:限制了每秒只接受某个ip 5次每秒的请求频率。

server {
	...
    location / {
    	...
    	limit_req zone=one burst=5;		
    	...
    }
}

说明:burst参数为超过频率限制的最大ip数量,如果超出burst,则其他ip再超出频率就直接返回503

参考:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

测试

使用go-stress-testing进行压测

>>> ./go-stress-testing-mac -c 7 -n 2 -H 'X-Signature: 123' -H 'X-DeliverId: 123' -u 'http://127.0.0.1:4000/pid/1/production_page'

nginx限流配置
可以看到成功数最多为5,其余的返回503

参考:
https://blog.csdn.net/hellow__world/article/details/78658041
https://webcache.googleusercontent.com/search?q=cache:eck2kMAqXzsJ:https://www.cnblogs.com/pengyunjing/p/10662612.html+&cd=2&hl=zh-CN&ct=clnk
https://segmentfault.com/a/1190000004688125

上一篇:华为防火墙L2TP ***的配置


下一篇:# Nginx 知识点