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

基于Cookie值配置Nginx Ingress实现Kubernetes多服务流量路由

基于Cookie的Nginx Ingress流量路由配置

要实现携带Cookie Beta=1的请求转发到api-v1,其余情况(Beta=0或无该Cookie)转发到api-v2,可通过Nginx Ingress的自定义snippets注解完成,完整配置如下:

kind: Ingress
metadata:
  name: api
  namespace: api
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.org/server-snippets: |
      upstream api-v1-svc {
        server api-v1.api.svc.cluster.local:80;
      }
      upstream api-v2-svc {
        server api-v2.api.svc.cluster.local:80;
      }
    nginx.org/location-snippets: |
      if ($cookie_Beta = "1") {
        proxy_pass http://api-v1-svc;
        break;
      }
      proxy_pass http://api-v2-svc;
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - api.domain.com
      secretName: api-domain-com-tls
  rules:
    - host: api.domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: api-v2
                port:
                  number: 80

配置要点说明

  • server-snippets:在Nginx的server块中定义两个上游服务(upstream),分别指向api-v1和api-v2的集群内部服务地址(格式为服务名.命名空间.svc.cluster.local:端口),这里选用Service的80端口(http端口)。
  • location-snippets:
    • 通过$cookie_Beta变量提取请求中的Beta Cookie值,当值为1时,将请求转发到api-v1-svc上游,并用break终止后续规则执行。
    • 所有未匹配到Beta=1的请求(包括Beta=0或无该Cookie),默认转发到api-v2-svc上游。
  • 默认Backend:在Ingress规则中配置默认后端为api-v2,作为兜底保障,避免snippets规则未覆盖到的场景出现请求异常。

内容的提问来源于stack exchange,提问作者Szymon Kamiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:30:59