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

配置HAProxy+K8s Nginx Ingress后子路径404问题求助

排查Kubernetes NGINX Ingress子路径404问题

从你的配置来看,访问/blue返回404主要有几个核心原因,咱们一步步拆解排查:

1. Ingress Rewrite规则适配错误(v1beta1版本专属坑)

你使用的是networking.k8s.io/v1beta1版本的Ingress,这个版本的rewrite-target注解逻辑和后续v1版本差异很大。当前你设置nginx.ingress.kubernetes.io/rewrite-target: /+path: /blue的组合,无法正确触发路径重写——NGINX不知道该如何把/blue的请求映射到后端服务的根路径。

针对v1beta1版本,需要通过正则捕获组来实现正确的重写:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /blue(/|$)(.*)
        backend:
          serviceName: nginx-deploy-blue
          servicePort: 80

这个配置会把/blue或/blue/xxx这类请求,分别重写到后端服务的/或/xxx,完全匹配后端服务的路径期望。

2. 确认HAProxy完整转发请求路径

你的HAProxy配置看起来是直接转发所有请求到192.168.1.10:80,但要确保它没有修改请求的URI。可以优化配置,添加健康检测和客户端IP传递,同时避免路径丢失:

frontend http_front
    bind *:80
    stats uri /haproxy?stats
    option forwardfor  # 传递客户端真实IP到Ingress Controller
    default_backend http_back
backend http_back
    balance roundrobin
    server kube 192.168.1.10:80 check  # 检测后端服务健康状态

3. 验证后端服务本身的可用性

访问/blue最终会被重写到后端服务的根路径,所以需要先确认nginx-deploy-blue服务本身能正常响应根路径请求。你可以在集群内部直接测试:

# 用集群内任意可执行curl的Pod测试服务可用性
kubectl exec -it <your-test-pod-name> -- curl http://nginx-deploy-blue/

如果这个请求返回404,问题就出在后端服务本身,和Ingress无关。

4. 查看NGINX Ingress Controller日志定位问题

最直接的方式是查看Ingress Controller的Pod日志,确认请求的路径、重写规则是否生效:

kubectl logs -n <nginx-ingress-namespace> <nginx-ingress-controller-pod-name>

日志里会清晰显示每个请求的request_uri、重写后的路径,以及转发的后端服务,能快速定位是路径重写失败还是服务路由错误。

5. 确认Ingress Class匹配

你的Ingress配置了kubernetes.io/ingress.class: nginx,要确保NGINX Ingress Controller的Deployment启动参数里也设置了--ingress-class=nginx,否则Ingress资源不会被该Controller识别处理。


按照上面的步骤逐一排查,应该能快速找到/blue返回404的根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:10:31