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

Kubernetes Ingress连接前后端异常:访问app.test返回空响应求助

Kubernetes Ingress 配置导致前端页面空响应的问题排查与修复

核心问题点

1. Ingress 规则结构错误

你的Ingress配置里,rules部分把host和http拆成了两个独立条目,导致访问app.test时根本匹配不到任何路径规则,自然返回空响应。

原错误配置片段:

rules:
- host: app.test
- http:
    paths:
      - path: /
        ...

这里- host: app.test是一个单独的无路径规则,- http:是另一个无关联host的规则,两者完全脱节,无法为app.test域名提供路由。

2. Service 与容器端口不匹配

  • 后端:Deployment里容器暴露的是80端口,但Service的targetPort设成了5000,流量根本无法转发到容器内。
  • 前端:同理,Deployment容器端口是80,Service的targetPort是5173,同样会导致流量丢失,无法触达前端容器。

3. Rewrite 注解配置不合理(可选优化)

当前nginx.ingress.kubernetes.io/rewrite-target: /对根路径来说是多余的,而如果后端API是基于/api前缀设计的,这个rewrite会把/api/xxx改成/xxx,可能导致后端无法识别正确的API路径。


修正后的配置

1. 修复后的 Ingress 配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: avatars-app-ingress
  annotations:
    # 如果后端需要保留/api前缀,用这个rewrite规则;不需要的话可以直接移除注解
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: app.test
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: frontend-app-service
              port:
                number: 5173
        - path: /api(/|$)(.*)
          pathType: Prefix
          backend:
            service:
              name: backend-app-service
              port:
                number: 5000

关键改动:把http嵌套到host: app.test的规则块内,确保路径规则属于该域名;调整/api的路径格式和rewrite规则,保证后端能正确接收请求路径。

2. 修复后的后端 Service

apiVersion: v1
kind: Service
metadata:
  name: backend-app-service
  namespace: ingress-nginx
spec:
  selector:
    app: backend-app
  ports:
    - protocol: TCP
      port: 5000
      targetPort: 80  # 匹配容器实际暴露的80端口

3. 修复后的前端 Service

apiVersion: v1
kind: Service
metadata:
  name: frontend-app-service
  namespace: ingress-nginx
spec:
  selector:
    app: frontend-app
  ports:
    - protocol: TCP
      port: 5173
      targetPort: 80  # 匹配容器实际暴露的80端口

验证操作

  1. 应用修正后的配置:
kubectl apply -f 你的修正后配置文件.yaml
  1. 检查Ingress状态:
kubectl get ingress avatars-app-ingress -n ingress-nginx
  1. 访问app.test,确认前端页面正常加载,同时测试app.test/api路径是否能正确调用后端接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:44:56