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

AKS集群Ingress NGINX访问/apple路径返回404无法访问问题排查

问题原因及解决方案

核心故障原因

你遇到的404问题是多个配置不规范叠加导致的,按优先级排查如下:

  • 注解前缀错误,重写规则未生效
    你当前使用的是旧版注解ingress.kubernetes.io/rewrite-target,官方NGINX Ingress控制器的标准注解前缀为nginx.ingress.kubernetes.io,该错误导致你配置的路径重写规则完全没有生效。请求访问/apple时直接将完整路径转发给后端应用,若你的应用没有配置/apple路径的路由,自然返回404。
  • Ingress API版本过旧已废弃
    你使用的extensions/v1beta1版本Ingress在K8s 1.16版本就已被弃用,1.22及之后版本完全移除了该API,新版NGINX Ingress控制器不会识别该版本的Ingress资源,你的规则大概率没有被控制器加载。
  • 未指定IngressClass
    如果你的AKS集群中存在多个Ingress控制器,或者控制器配置了默认IngressClass匹配规则,未显式指定IngressClass的资源会被控制器忽略。你可以看到你的Ingress详情中Address字段为空,也证明了控制器没有关联该资源。
  • 后端应用路径适配问题
    如果前三项都修复后仍然404,需要确认你的应用是否能处理/apple路径的请求,优先在集群内验证服务可用性:
# 进入集群内Pod测试服务根路径访问是否正常
kubectl run -it --rm --image=curlimages/curl testcurl -n testns -- curl http://my-svc:80

修正后的Ingress配置

使用符合当前K8s标准的配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: testns
  annotations:
    # 正确的注解前缀,配合路径捕获组实现前缀重写
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 显式指定IngressClass为nginx,确保被NGINX控制器处理
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
        # 配置路径匹配规则,捕获/apple后的所有路径
        - path: /apple(/|$)(.*)
          pathType: Prefix
          backend:
            service:
              name: my-svc
              port:
                number: 80

该配置会将/apple前缀的所有路径重写后转发到后端服务根路径:比如访问<INGRESS_IP>/apple转发到服务的/路径,访问<INGRESS_IP>/apple/test转发到服务的/test路径。

验证步骤

  1. 应用新的Ingress配置后,执行kubectl get ingress -n testns,确认ADDRESS字段已经显示Ingress控制器的公网IP
  2. 若Address仍为空,先排查NGINX Ingress控制器运行状态:kubectl get pods -n ingress-nginx,确认所有控制器Pod处于Running状态
  3. 仍然异常可查看控制器日志定位转发逻辑:kubectl logs -n ingress-nginx <你的控制器Pod名称>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:01