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

Kubernetes Ingress多路径配置异常:请求返回Cannot GET /

Kubernetes Ingress多路径配置问题解决方案及调试方法

问题解决方案

你遇到的Cannot GET /错误,核心原因是Ingress转发请求时错误截断路径前缀,仅将根路径/传递给后端服务,导致Node.js API无法匹配对应路由。针对Minikube默认使用的Nginx Ingress Controller,可通过以下步骤修复:

  1. 修改Ingress配置,添加路径重写注解
    在Ingress资源的metadata.annotations中添加Nginx路径重写配置,同时调整路径匹配规则,确保转发时保留路径后缀:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: foobar-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /$2
    spec:
      rules:
      - host: foobar.com
        http:
          paths:
          - path: /foo(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: foo-service
                port:
                  number: 80
          - path: /bar(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: bar-service
                port:
                  number: 80
    

    该配置会将/foo/tea这类请求重写为/tea转发给后端Foo服务,匹配你Node.js API中的/tea路由。

  2. 验证后端服务路由匹配
    确认Node.js API的路由定义为/tea而非/foo/tea——Ingress已完成路径前缀剥离,后端只需处理业务路径即可。

Ingress常见问题调试方法

  • 查看Ingress Controller日志
    执行kubectl logs -n kube-system <nginx-ingress-controller-pod-name>(替换为实际Controller Pod名称),查看请求转发细节,确认后端收到的路径是否符合预期。

  • 直接验证后端服务可用性
    通过端口转发直接访问后端Service:kubectl port-forward service/foo-service 8080:80,然后执行curl localhost:8080/tea,若能正常返回,说明后端服务本身无问题,问题出在Ingress配置。

  • 检查Ingress资源状态
    执行kubectl describe ingress foobar-ingress,查看Ingress绑定状态、规则是否生效,是否存在配置错误提示。

  • 确认Ingress网络可达性
    执行kubectl get ingress查看Ingress的ADDRESS字段是否有值,同时确保minikube tunnel处于运行状态,/etc/hosts中127.0.0.1 foobar.com的配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:51:19