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

Azure Kubernetes集群中Ingress-Nginx始终返回404页面求助

问题分析与解决建议

以下是可能导致/api/users/路径返回404的常见原因及排查方案:

1. 路径转发与后端服务路由不匹配

你的Ingress配置使用Prefix匹配规则,会将完整请求路径(比如/api/users/currentuser/)直接转发给be-auth-srv服务。如果后端服务的路由规则是监听/currentuser/而非/api/users/currentuser/,就会返回404。

解决方法:添加路径重写注解,剥离前缀路径后转发给后端:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: www.example.com
      http:
        paths:
          - path: /api/users(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: be-auth-srv
                port:
                  number: 9001
          - path: /auth(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: be-contact-form-srv
                port:
                  number: 9000

通过正则捕获组将/api/users/currentuser/重写为/currentuser/后转发,同时将pathType改为ImplementationSpecific(结合正则重写时,Prefix规则可能不符合预期)。

2. 后端服务或Pod未正常运行

检查be-auth-srv服务是否有可用的后端Pod:

  • 查看服务端点状态:
kubectl get endpoints be-auth-srv

如果ENDPOINTS列为空,说明没有Pod关联到该服务,或Pod未就绪。

  • 检查Pod状态:
kubectl get pods -l <be-auth-srv对应的Pod标签>

确认Pod处于Running状态,且就绪探针检测通过。

3. Ingress Controller配置冲突或路径匹配异常

  • 检查是否存在其他Ingress资源匹配同一个host路径,导致请求被错误路由:
kubectl get ingress
  • 查看Ingress Controller生成的实际Nginx配置,确认路径规则是否符合预期:
kubectl exec -n <ingress-controller命名空间> <ingress-controller-pod名称> -- cat /etc/nginx/nginx.conf | grep -A 10 -B 5 "/api/users"

4. 后端服务端口或路由配置错误

确认be-auth-srv服务暴露的端口9001正确,后端应用确实在监听该端口,且应用内部的路由规则已正确配置对应路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:36:20