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

Kubernetes Nginx Ingress报503/404错误及TLS必要性咨询

嘿,我来帮你梳理下这两个问题~

关于Ingress是否必须使用TLS?

答案是不需要。TLS是可选配置,主要用于加密客户端和Ingress Controller之间的HTTP流量、提升安全性。默认情况下,Nginx Ingress Controller完全支持纯HTTP的Ingress规则,只有当你的集群有强制加密要求(比如配置了全局TLS策略),或者你自身需要加密流量时,才需要配置TLS证书和相关规则。

解决路径配置导致的404/503错误

你的Ingress规则出现404和503,大概率是路径转发配置或者后端服务关联的问题,我给你几个排查和修复的方向:

1. 路径转发的重写问题

Nginx Ingress Controller默认会把请求的完整路径(比如/test)转发给后端服务。如果你的后端服务example-project的API根路径是/(而非/test),那后端就会找不到对应路径,返回404。

解决方法是添加重写注释,把/test开头的请求重写为/后转发给后端,同时建议使用更稳定的Ingress API版本:

apiVersion: networking.k8s.io/v1  # 推荐使用这个稳定版本,v1beta1已被废弃
kind: Ingress
metadata:
  name: hello-world-ing
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /  # 关键注释:重写请求路径
spec:
  rules:
  - http:
      paths:
      - path: /test
        pathType: Prefix  # 明确指定路径匹配类型为前缀匹配
        backend:
          service:
            name: example-project
            port:
              number: 8085

2. 后端服务的可用性问题(503错误核心原因)

503通常意味着Ingress Controller找不到后端服务的可用Pod,你需要检查:

  • 执行kubectl get pods,确认example-project对应的Pod处于Ready状态;
  • 执行kubectl describe service example-project,查看Endpoints字段是否有Pod的IP(如果为空,说明Service和Pod的标签不匹配,或者Pod未通过就绪探针检查);
  • 在集群内的任意Pod中,用curl <service-cluster-ip>:8085测试后端服务是否能正常响应,如果这里都失败,问题出在后端服务本身,和Ingress无关。

3. 查看Ingress Controller日志定位问题

如果调整配置后仍有问题,你可以查看Nginx Ingress Controller的日志,里面会详细记录请求的转发过程,帮你定位具体错误点:

# 假设Ingress Controller部署在ingress-nginx命名空间,替换为你的实际命名空间
kubectl logs -n ingress-nginx -l app=nginx-ingress

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:09