|NO.Z.00357|——————————|CloudNative|——|KuberNetes&运维.V73|——|IngressNginx.v09|速率限制|
一、IngressNginx速率限制概述
### --- 限制单个IP
~~~ 限制单个IP的连接数或者每秒的并发数
### --- 官网地址:
~~~ https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#whitelist-source-range

### --- 定义连接和传输速率的限制
nginx.ingress.kubernetes.io/limit-connections: // 单个 IP 地址允许的并发连接数。超过此限制时将返回 503 错误。
nginx.ingress.kubernetes.io/limit-rps: // 每秒从给定 IP 接受的请求数。突发限制设置为此限制乘以突发倍数,默认倍数为5。当客户端超过此限制时,返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-rpm: // 每分钟从给定 IP 接受的请求数。突发限制设置为此限制乘以突发倍数,默认倍数为5。当客户端超过此限制时,返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-burst-multiplier: // 突发大小限制速率的乘数。默认突发乘数为 5,此注释覆盖默认乘数。当客户端超过此限制时,将 返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-rate-after: // 初始千字节数,之后对给定连接的响应的进一步传输将受到速率限制。此功能必须在启用代理缓冲的情况下使用。
nginx.ingress.kubernetes.io/limit-rate: // 每秒允许发送到给定连接的千字节数。零值禁用速率限制。此功能必须在启用代理缓冲的情况下使用。
nginx.ingress.kubernetes.io/limit-whitelist: // 要从速率限制中排除的客户端 IP 源范围。该值是逗号分隔的 CIDR 列表。
二、速率限制
### --- nginx.ingress.kubernetes.io/limit-connections:单个 IP 地址允许的并发连接数。
~~~ 超过此限制时将返回 503 错误
[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata: # 此行下添加如下参数
annotations:
nginx.ingress.kubernetes.io/limit-connections: "1"
name: prom-ingresses # 此行上添加如下参数
三、访问请求:prom.test.com :报错503

四、
nginx.ingress.kubernetes.io/limit-rps
:每秒从给定 IP 接受的请求数。### --- nginx.ingress.kubernetes.io/limit-rps:每秒从给定 IP 接受的请求数。
~~~ 突发限制设置为此限制乘以突发倍数,默认倍数为5。
~~~ 当客户端超过此限制时,返回limit-req-status-code default: 503
[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata: # 此行下添加如下参数
annotations:
nginx.ingress.kubernetes.io/limit-rps: "1"
name: prom-ingresses # 此行上添加如下参数
五、访问请求:prom.test.com:报错503:
### --- 访问请求:prom.test.com:报错503:
~~~ 当每秒请求数设置为1时,连续刷新报错503
~~~ ——>当每秒请求数设置为5时,刷新正常


六、白名单配置:
nginx.ingress.kubernetes.io/limit-whitelist
:### --- 白名单配置:nginx.ingress.kubernetes.io/limit-whitelist:
~~~ 要从速率限制中排除的客户端 IP 源范围。
~~~ 该值是逗号分隔的 CIDR 列表
~~~ ——>通过本地访问http://prom.test.com/graph:报错503
~~~ ——>通过白名单主机访问
[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata: # 此行下添加如下参数
annotations:
nginx.ingress.kubernetes.io/limit-connections: "1"
nginx.ingress.kubernetes.io/limit-whitelist: 192.168.1.11
creationTimestamp: null
name: prom-ingresses # 此行上添加如下参数

### --- 通过192.168.1.11访问
~~~ 注:显示405,说明正常
[root@k8s-master01 ~]# curl http://prom.test.com/graph -I
HTTP/1.1 405 Method Not Allowed
### --- 并发请求
[root@k8s-master01 ~]# for i in `seq 1 100`; do curl http://prom.test.com -I ;done
HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff
HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff
HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言