分类网站模版,推广软文300字范文,宜兴网站开发,石家庄网架公司一、Nginx限流熔断
Nginx 是一款流行的反向代理和负载均衡服务器#xff0c;也可以用于实现服务熔断和限流。通过使用 Nginx 的限流和熔断模块#xff0c;比如#xff1a;ngx_http_limit_req_module 和 ngx_http_limit_conn_module#xff0c;可以在代理层面对服务进行限流…一、Nginx限流熔断
Nginx 是一款流行的反向代理和负载均衡服务器也可以用于实现服务熔断和限流。通过使用 Nginx 的限流和熔断模块比如ngx_http_limit_req_module 和 ngx_http_limit_conn_module可以在代理层面对服务进行限流和熔断。 中文文档https://nginx.cn/doc/index.html 针对高并发的场景。Nginx的限流主要是两种方式
限制访问频率限制并发连接数。
二、限制请求访问频率
Nginx中使用 ngx_http_limit_req_module模块来限制请求的访问频率基于漏桶算法原理实现。
使用 nginx的 limit_req_zone 和 limit_req 两个指令。
1、基本语法
limit_req_zone限制单个IP的请求处理速率。 基本语法limit_req_zone key zone rate key 定义限流对象binary_remote_addr 是一种key表示基于 remote_addr(客户端IP) 来做限流binary_ 的目的是压缩内存占用量。zone定义共享内存区来存储访问信息 myRateLimit:10m 表示一个大小为10M名字为myRateLimit的内存区域。1M能存储16000 IP地址的访问信息10M可以存储16W IP地址访问信息。rate 用于设置最大访问速率rate10r/s 表示每秒最多处理10个请求。Nginx 实际上以毫秒为粒度来跟踪请求信息因此 10r/s 实际上是限制每100毫秒处理一个请求。这意味着自上一个请求处理完后若后续100毫秒内又有请求到达将拒绝处理该请求。
http {# 请求限流定义1:# - $binary_remote_addr限制对象(客户端)# - zone定义限制(策略)名称# - 10m用十兆空间记录访问次数# - rate每秒10次的请求处理速率limit_req_zone $binary_remote_addr zone{limits-name}:10m rate10r/s;# 请求限流定义2:# - $server_name限制对象对指定服务器请求的限制limit_req_zone $server_name zone{limits-name}:10m rate10r/s;server {location /search/ {# 引用以上定义的限流策略做以下设定漏桶方式# - burst最多接收6个排队用户IP(从0开始计数)处于等待处理状态容量# - nodelay超出排队之外的更多请求拒绝并返回503溢出limit_req zone{limits-name} [burst5] [nodelay];}}
}针对流量突然增大超出的请求无法处理时可以通过 Nginx提供的 burst 参数来解决突发流量的问题并结合 nodelay 参数一起使用。
burst 译为突发、爆发表示在超过设定的处理速率后能额外处理的请求数。nodelay超出排队之外的更多请求拒绝并返回503溢出
2、实例
第一步修改Nginx的配置文件
http {# 请求限流定义:limit_req_zone $binary_remote_addr zonemyRateLimit:10m rate1r/s;server {listen 80;server_name 192.168.xxx.xxx; # 指定虚拟主机的IP或者外网域名location / {root html;index index.html index.htm; proxy_pass http://192.168.xxx.xxx:8080;limit_req zonemyRateLimit burst5 nodelay;}}
}第二步重启Nginx
修改 nginx完之后保存退出重启Nginx。
# 先执行停止命令再执行启动命令
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx第三步 浏览器快速访问 二、限制并发连接数
Nginx 的 ngx_http_limit_conn_module模块提供了对资源连接数进行限制的功能。
使用 limit_conn_zone 和 limit_conn 两个指令。
1、基本语法 http_limit_conn单个IP同时允许的连接限制。 http {# 连接限流定义1# - $binary_remote_addr限制对象(客户端)# - zone限制自定义名称# - 10内存中用10兆空间存储连接记录limit_conn_zone $binary_remote_addr zone{limits-name}:10m;# 请求限流定义2:# - $server_name限制对象对指定服务器请求的限制limit_conn_zone $server_name zone{limits-name}:10m;server {location /search/ {# 限制单个IP同时允许建立多少连接并发限制limit_conn {limits-name} 1;}}
}2、实例
第一步修改Nginx的配置文件
http {# 请求限流定义:limit_conn_zone $binary_remote_addr zonemyConnLimit:10m;server {listen 80;server_name 192.168.xxx.xxx; # 指定虚拟主机的IP或者外网域名location / {root html;index index.html index.htm; proxy_pass http://192.168.xxx.xxx:8080;# 限制单个IP同时允许建立5个连接limit_conn zonemyConnLimit 5;}}
}第二步重启Nginx
修改 nginx完之后保存退出重启Nginx。
# 先执行停止命令再执行启动命令
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx第三步 浏览器快速访问 – 求知若饥虚心若愚。