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

Ingress-Nginx访问LoadBalancer外部IP出现404 Not Found求助

问题原因及解决办法

核心原因:直接访问LB IP无匹配的Ingress规则

你的Ingress配置里只定义了factory.**.com和api.factory.**.com这两个域名的路由规则,Nginx Ingress Controller是根据请求的Host头来匹配后端服务的。当你直接访问LoadBalancer的外部IP时,请求的Host头就是这个IP地址,没有任何规则能匹配它,所以控制器返回404错误。

另外从Ingress描述里能看到Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>),这意味着当没有规则匹配请求时,控制器找不到默认的兜底后端,也会加重404的出现,但这不是你当前问题的核心。


解决办法

1. 用配置的域名访问(推荐生产环境)

  • 把factory.**.com和api.factory.**.com解析到Ingress Controller的外部IP aa************.us-east-1.elb.amazonaws.com
  • 访问时使用对应域名:
    • 访问http://factory.**.com → 转发到factory服务的80端口
    • 访问http://api.factory.**.com → 转发到factory服务的8082端口

2. 本地hosts映射临时测试

如果只是临时验证服务,不想改域名解析,可以修改本地hosts文件:

  • Linux/macOS:编辑/etc/hosts,Windows:编辑C:\Windows\System32\drivers\etc\hosts
  • 添加以下内容:
    aa************.us-east-1.elb.amazonaws.com  factory.**.com
    aa************.us-east-1.elb.amazonaws.com  api.factory.**.com
    

保存后用域名访问即可。

3. 添加IP匹配的Ingress规则(不推荐生产)

如果一定要通过IP访问,可以新增一条不带Host的Ingress规则:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: factory-ip-access
  namespace: kerberos-factory
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: factory
            port: 
              number: 80

应用后直接访问IP会转发到factory服务的80端口,但生产环境不建议这么做,因为LB IP可能会变动。

可选:修复默认后端

如果想消除Ingress描述里的默认后端错误提示,可以安装官方默认后端服务:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/docs/examples/http-svc.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:36:17