EKS集群中单ingress-nginx绑定多域名SSL证书的实现方案咨询
Ingress-Nginx多域名多证书绑定方案
核心问题解答
官方Kubernetes ingress-nginx原生支持同一后端服务绑定多份不同域名的证书,不需要为每个域名单独部署一套ingress-nginx实例,完全符合Kubernetes最佳实践。
具体实现方式
你可以通过两种常用配置方式实现需求:
- 单个Ingress资源配置多证书多路由:在同一个Ingress的
tls字段下添加所有域名对应的证书Secret,rules字段下将所有域名的路由规则都指向同一个后端Service,示例配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-multi-domain-ingress annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: tls: - hosts: - clientA.mycompany.com - clientB.mycompany.com secretName: mycompany-wildcard-cert - hosts: - clientW.customdomain.com secretName: clientw-customdomain-cert - hosts: - carsAcompany.com secretName: carsacompany-cert - hosts: - fridgesBcompany.com secretName: fridgesbcompany-cert rules: - host: clientA.mycompany.com http: paths: - path: / pathType: Prefix backend: service: name: your-business-service port: number: 80 - host: clientB.mycompany.com http: paths: - path: / pathType: Prefix backend: service: name: your-business-service port: number: 80 # 其余客户域名的路由规则同上,均指向同一个后端Service即可
ingress-nginx会自动根据客户端请求的SNI域名匹配对应的证书返回,不会出现证书不匹配问题。
- 多Ingress资源共享实例:如果域名数量多、归属不同业务线,也可以为每个域名/每组域名创建独立的Ingress资源,所有Ingress均指向同一个后端Service,共享同一套ingress-nginx实例,规则会自动合并生效。
场景优化建议
- 自有域名复用泛域名证书:你司的
*.mycompany.com泛域名可以直接申请一张泛域名证书,所有子域名复用该证书即可,无需单独申请每个子域名的证书。 - 客户自定义域名自动证书管理:可以搭配cert-manager组件,配置HTTP01挑战自动为客户新接入的独立域名签发、续期证书,无需手动操作证书更新。
- 大规模域名适配:即使有数千级别的客户独立域名,ingress-nginx也支持SNI动态加载证书,性能足以支撑业务需求,无需拆分多套ingress-nginx实例。
可选替代方案
如果你后续需要更复杂的流量管理能力,也可以使用AWS Load Balancer Controller(原ALB Ingress Controller),直接绑定AWS ALB实例,ALB单监听器支持绑定最多25张证书,也可直接关联ACM证书实现自动续期,同样支持同一服务绑定多域名多证书的需求。
内容的提问来源于stack exchange,提问作者user1911
相关产品推荐
相关产品推荐

