You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EKS集群的nginx-ingress-controller中为特定API设置速率限制?

完全可行,以下是具体配置方案

1. 定义全局速率限制规则(ConfigMap)

首先在nginx-ingress-controller的ConfigMap中定义速率限制zone,这会作用于Nginx的http块级别:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-ingress-controller
  namespace: kube-system # 替换为你的ingress控制器所在命名空间
data:
  # 基于客户端IP创建名为mylimit的速率限制zone,内存占用10MB,速率10次/秒
  limit_req_zone: "$binary_remote_addr zone=mylimit:10m rate=10r/s"

2. 在Ingress资源中针对特定路径配置速率限制

通过nginx.ingress.kubernetes.io/configuration-snippet注解,给目标路径(如/healthz)添加Nginx location级别的速率限制规则,其他路径不受影响:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      # 仅对/healthz路径应用速率限制
      location /healthz {
        limit_req zone=mylimit burst=20 nodelay;
        proxy_pass http://$service_name:$service_port;
      }
spec:
  ingressClassName: nginx # 替换为你的ingress类名
  rules:
  - host: your-domain.com # 替换为你的域名
    http:
      paths:
      - path: /healthz
        pathType: Prefix
        backend:
          service:
            name: your-app-service # 替换为你的服务名
            port:
              number: 80
      - path: /
        pathType: Prefix
        backend:
          service:
            name: your-app-service
            port:
              number: 80

关键参数说明

  • rate=10r/s:每秒允许10个请求
  • burst=20:允许最多20个突发请求超出速率限制
  • nodelay:突发请求不排队直接处理,超出burst的请求直接返回503

验证配置

应用上述ConfigMap和Ingress后,等待nginx-ingress-controller同步配置,可通过ab、curl等工具测试/healthz路径的速率限制效果,其他路径不会受到影响。

内容的提问来源于stack exchange,提问作者user3398900

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:40:22