Windows Docker Desktop下NGINX Ingress访问404问题求助(非minikube)
排查解决步骤
- 补全IngressClass配置
你输出的Ingress资源CLASS字段为<none>,是ADDRESS为空的核心原因。首先执行命令查询集群现存IngressClass:
kubectl get ingressclass正常Docker Desktop环境安装的nginx-ingress会默认存在名为
nginx的IngressClass,你可以选择两种方式修复:- 方式一:修改Ingress资源定义,在
spec下新增ingressClassName: nginx字段 - 方式二:将
nginx设为集群默认IngressClass,所有未指定class的Ingress会自动绑定:kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class=true
- 补全IngressClass配置
- 校验Ingress路由规则正确性
确保你的Ingress规则中路径、后端服务配置匹配你的业务服务,参考正确配置示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: ingressClassName: nginx rules: - host: hello-world.info http: paths: - path: / pathType: Prefix backend: service: name: web port: number: 8080若路径配置不匹配(例如只配置了
/test路径但访问根路径),就会返回404错误。- 校验Ingress路由规则正确性
- 确认访问方式正确
通过Ingress访问服务时,不需要携带NodePort端口31429,直接访问http://hello-world.info即可。Docker Desktop环境的nginx-ingress控制器默认已经将80端口映射到本地127.0.0.1的80端口,只要你hosts文件配置127.0.0.1 hello-world.info即可正常解析。
- 确认访问方式正确
- 验证配置生效
配置修改完成后等待1分钟左右,执行kubectl get ingress,正常ADDRESS字段会显示为localhost,此时即可正常访问服务。如果仍有问题,可查看nginx-ingress控制器日志排查具体错误:
kubectl logs -n ingress-nginx deployment/ingress-nginx-controller- 验证配置生效
内容的提问来源于stack exchange,提问作者dev1334
相关产品推荐
相关产品推荐

