文章15 | 阅读 4718 | 点赞0
在微服务架构中,我们经常要在网关中对服务进行限速,以保护后端服务的稳定性,防止被大流量冲垮,在Nginx中也可以对请求限速
ngx_http_limit_conn_module 默认编译进nginx,可通过–without-http_limit_conn_module禁用功能
http {
#以IP为key进行限速,再定义一个共享内存size=10M,name=one,供下面的limit_conn指令使用,共享内存大小能对多少请求进行限速,可以根据业务调整
limit_conn_zone $binary_remote_addr zone=one:10m;
server {
server_name zy.csxiuneng.com;
root html/;
location /{
limit_conn_status 500;#默认503,自定义响应码
limit_conn_log_level warn;#默认error,自定义为 warn
#每秒只发送50字节给客户端,默认不设置,测试时可以设置
limit_rate 50;
#同时并发连接数为1,只要同时有2个客户端连接就会触发限速,对应上面limit_conn_zone的name=one
limit_conn one 1;
}
}
}
ngx_http_limit_req_module 默认编译进nginx,可通过–without_http_limit_req_module禁用功能
http {
#以IP为key进行限速,再定义一个共享内存size=10M,name=one,每分钟可以处理10个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/m;
server {
server_name zy.csxiuneng.com;
root html/;
location /{
limit_req_status 500;#默认503,自定义响应码
limit_req_log_level warn;#默认error,自定义为 warn
limit_req zone=one burst=10; #对应上面limit_req_zone的name=one,同时,当请求达到最大上限10后,多余的请求放入burst,burst可以放入10个,如果超出burst个请求,只直接返回500给用户
}
}
}
如果同时配置limit_req、limit_conn,如果先触发limit_req则先生效,不会触发后面的limit_conn了
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://zhuyu.blog.csdn.net/article/details/92416786
内容来源于网络,如有侵权,请联系作者删除!