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

求助:基于JWT解码值配置NGINX Ingress Controller速率限制

基于JWT字段配置NGINX Kubernetes Ingress速率限制

要实现基于JWT解码值的速率限制,需先让NGINX Ingress完成JWT解析并提取目标字段,再将该字段作为速率限制的key。结合你的Kubernetes 1.25和NGINX Ingress 3.0.2版本,以下是完整配置方案:

1. 核心配置逻辑

  • 先通过jwtAuth配置完成JWT验证,并将需要的JWT字段提取到NGINX变量中
  • 在rateLimit的key字段中引用该变量,实现基于JWT字段的精准速率限制

完整配置示例

apiVersion: k8s.nginx.org/v1 
kind: Policy 
metadata: 
  name: rate-limit-policy 
spec: 
  # 配置JWT认证并提取目标字段
  jwtAuth:
    # 若使用JWKS端点验证JWT,填写你的JWKS地址
    jwksUri: "https://your-jwks-provider/.well-known/jwks.json"
    # 若使用对称密钥验证,替换为以下配置(需提前创建对应Secret)
    # secret:
    #   name: jwt-symmetric-secret
    #   key: secret-value
    # 提取JWT中的sub字段,存入$jwt_sub变量
    extractClaims:
      - name: sub
        variable: jwt_sub
  # 配置速率限制,使用提取的JWT字段作为key
  rateLimit: 
    rate: 10r/s 
    key: "$jwt_sub" # 引用提取的JWT字段变量,必须用双引号包裹
    zoneSize: 10M 
--- 
apiVersion: k8s.nginx.org/v1 
kind: VirtualServer 
metadata: 
  name: api-vs 
spec: 
  ingressClassName: nginx-api 
  host: api.example.com 
  policies: 
  - name: rate-limit-policy 
  upstreams: 
  - name: api 
    service: api 
    port: 80 
  routes: 
  - path: / 
    action: 
      pass: api 

关键注意事项

  • 替换jwksUri或secret配置为你的实际JWT验证信息
  • 若需使用JWT中的其他字段(如自定义user_id),修改extractClaims中的name值即可
  • 速率限制的key必须用双引号包裹变量,否则NGINX会将其当作普通字符串处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:28:02