GKE集群Nginx Ingress子子域名无法访问问题解决方法
故障根因
问题出在DNS通配符的匹配规则上,和你GKE侧的Ingress配置没有关系:
- DNS标准定义的
*通配符仅匹配单级子域名,你当前配置的*.example.com解析记录,只能覆盖echo2.example.com这类一级子域,echo1.eu3.example.com属于二级子域(子子域名),完全不会被这条通配符记录命中,DNS解析阶段就拿不到你GKE负载均衡的IP,自然无法访问。 - Cloudflare严格遵循这个DNS标准,没有配置开关可以让单星号通配符匹配多级子域。
修复方案
两种配置方式二选一即可:
- 单条记录配置:在Cloudflare DNS面板单独添加
echo1.eu3.example.com的A/AAAA记录,值填你Nginx Ingress关联的GKE负载均衡IP,代理状态(橙云/灰云)和其他正常域名保持一致就行。 - 多级通配符配置:添加一条
*.eu3.example.com的通配符记录,同样指向GKE负载均衡IP,后续所有xxx.eu3.example.com格式的域名都能自动解析,不用重复添加单条记录。
验证&后续排查
配置完等DNS TTL过期生效后,先做解析校验:
# 校验返回IP是否为GKE负载均衡地址 dig +short echo1.eu3.example.com
如果解析正常还是无法访问,按顺序排查:
- 检查Cloudflare SSL/TLS加密模式:如果Ingress侧没配置80端口跳转、没挂载证书,不要开「严格」模式,选「灵活」即可避免握手失败。
- 检查GCP防火墙规则,确认负载均衡的入站规则放通了80/443端口的Cloudflare回源IP段。
- 查看Nginx Ingress Controller日志,如果完全收不到对应域名的请求,说明回源链路被拦截;如果收到请求返回404,检查Ingress的host字段有没有拼写错误、Service和端口配置是否正确。
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

