首页/云/云与容器速查/Ingress 访问 404/路由不生效排查

Ingress 访问 404/路由不生效排查

Ingress 404 多数不是后端问题:确认请求进了哪个 Controller、Host/Path 规则是否匹配、IngressClass 是否被认领,再查后端。

云与容器速查云更新于 2026-10-13

Ingress 返回 404 怎么查

Ingress 访问返回 404 多数不是后端问题:先确认请求进了哪个控制器、主机与路径规则是否匹配、入口类是否被控制器认领,最后才查后端服务。按这个顺序排查,能避免在后端绕圈。

基本信息

第一步查看 Ingress 是否分配了访问地址
第二步描述 Ingress,核对规则与请求的主机与路径
第三步对照入口类资源与 Ingress 上声明的类名
第四步绕开 DNS 直连控制器验证,指定解析目标与主机头
第五步看控制器日志,确认请求是否匹配到该 Ingress
最后以上都正常再查 Service 与 Pod

404 的两种来源

来源表现处置
控制器未匹配日志里没有对应路由记录核对类名、主机与路径
路径类型不匹配前缀与精确匹配行为不同调整路径类型或请求路径
后端返回 404控制器有匹配记录但上游报错查 Service 与 Pod
DNS 未切到新入口请求打到旧地址用指定解析验证
默认后端兜底未匹配规则时返回默认页确认是否缺少规则

排查命令

排查命令
kubectl get ingress -A                                             # 看地址是否分配
kubectl describe ingress web                                      # 核对规则
kubectl get ingressclass                                          # 对照类名
curl -sv --resolve www.example.com:80:10.0.0.10 http://www.example.com/   # 绕开 DNS
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller --tail=80

典型使用场景

  • 域名已接入但访问 404,需要区分是控制器未匹配还是后端返回
  • 灰度切换时旧入口仍在返回,怀疑 DNS 未生效
  • 路径规则调整后部分接口 404,属于匹配类型差异
  • 多控制器共用集群,Ingress 创建成功但无人认领
控制器未匹配与后端返回是两种不同的 404:控制器日志能看到匹配过程,先看日志再定位后端,顺序反了容易白查。
域名解析还没切到新入口时,同样表现为旧源站返回的 404;用指定解析直连控制器能快速排除这类干扰。
入口类名没写或写错时 Ingress 创建成功却无人认领,这类问题在控制台看不出异常,必须用命令行核对。

易错点

  • 入口类名没写或写错:Ingress 创建成功但无人认领
  • 路径类型选错:前缀与精确匹配的差异造成 404
  • 直接改 DNS 排查:缓存与生效延迟让结论不可靠,应先用指定解析验证
  • 只看后端不看控制器日志:后端日志里根本没有这条请求
  • 改完规则不重启或等待控制器重载:新规则短暂未生效

数据来源与参考

  • Kubernetes Docs:Ingress
  • ingress-nginx Docs:Troubleshooting

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌