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

K8s Nginx Ingress下多域名CNAME映射至单域名不同路径实现方法

需求可行性结论

该需求完全可实现,依托已部署的Nginx Ingress原生路由、路径重写能力即可完成配置,不需要修改商城后端的业务代码。

具体配置步骤

1. 客户侧DNS解析配置

通知两位客户分别为自有域名添加CNAME解析记录:

  • 客户1将www.customer1.com的CNAME指向Nginx Ingress的对外负载均衡地址,直接CNAME到已正常解析的shop.mycompany.com也可
  • 客户2将www.customer2.com的CNAME指向上述相同的Ingress入口地址

2. K8s侧Nginx Ingress规则配置

核心逻辑是:识别请求携带的Host头为客户自有域名时,自动将请求路径重写为对应客户编号的前缀路径,再转发给后端商城服务,全程对访问用户透明。
假设商城后端Service名称为mall-svc,服务端口为80,Ingress配置示例如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mall-custom-domain-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    # 路径重写规则,将捕获的路径段拼接为后端需要的带客户前缀的路径
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 可选配置:自动替换后端返回的跳转地址,避免跳转到原shop.mycompany.com域名
    nginx.ingress.kubernetes.io/proxy-redirect-from: "~*^https?://shop.mycompany.com/(customer[0-9]+)/(.*)$"
    nginx.ingress.kubernetes.io/proxy-redirect-to: "/$2"
spec:
  # 可选:如果需要为客户自有域名配置HTTPS,添加以下tls段,提前将两个域名的证书存入名为mall-custom-domain-tls的Secret即可
  # tls:
  # - hosts:
  #   - www.customer1.com
  #   - www.customer2.com
  #   secretName: mall-custom-domain-tls
  rules:
  # 客户1专属域名路由规则
  - host: www.customer1.com
    http:
      paths:
      - path: /(customer1/|)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: mall-svc
            port:
              number: 80
  # 客户2专属域名路由规则
  - host: www.customer2.com
    http:
      paths:
      - path: /(customer2/|)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: mall-svc
            port:
              number: 80

配置关键点说明

  • rewrite-target: /$2配合path中的正则捕获组:用户访问www.customer1.com/xxx时,后端服务实际收到的请求路径为/customer1/xxx,完全兼容原有商城的路径路由规则
  • path正则/(customer1/|)(.*)同时兼容原有访问逻辑:不会影响shop.mycompany.com/customer1路径的正常访问,新旧访问方式可并行生效
  • proxy-redirect为可选优化项:解决后端服务返回3xx跳转时Location头携带原商城地址的问题,保证用户全程停留在自有域名下,不会跳转到shop.mycompany.com

3. 生效验证

  1. 应用上述Ingress配置后,执行kubectl describe ingress mall-custom-domain-ingress,确认规则已被Nginx Ingress控制器正常同步
  2. 等待客户侧DNS解析生效后,分别访问两个客户自有域名,确认可正常打开对应客户的专属商城
  3. 测试商城内页面跳转、静态资源加载、下单等核心流程,确认无路径报错、无跳转到原域名的问题即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:12:19