You need to enable JavaScript to run this app. 配置nginx-ingress路由后upstream默认指向127.0.0.1:8181的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

配置nginx-ingress路由后upstream默认指向127.0.0.1:8181的问题排查

异常根因说明

出现upstream默认指向127.0.0.1:8181的问题,本质是NGINX官方Ingress控制器无法正确解析Ingress规则里关联的后端Service引用,只能回退到内置兜底后端地址,具体配置错误点如下:

  • 版本兼容问题是核心诱因:你使用的nginx/nginx-ingress:1.9.1版本,从1.9.0大版本更新开始,默认关闭了对networking.k8s.io/v1beta1版本Ingress资源的解析支持。虽然控制器能识别到Ingress的域名、路径等顶层配置、生成对应命名规则的upstream块,但因为无法匹配v1beta1版本的backend字段结构,拿不到你配置的landing服务的关联信息,就会直接将upstream的server地址设置为内置的兜底地址127.0.0.1:8181。
  • 冗余配置加剧了解析异常:你在Ingress配置中同时保留了新旧两套Ingress类的标识:旧版注解kubernetes.io/ingress.class: "nginx"和新版spec.ingressClassName: nginx字段。1.9.x版本的控制器优先识别新版的ingressClassName字段,同时存在旧注解会造成解析逻辑的顺序混乱,进一步提升backend引用解析失败的概率。
修复调整方案
  • 优先将Ingress资源升级为集群当前支持的networking.k8s.io/v1版本,调整backend结构以匹配v1版本的API规范,补充必填的pathType: Prefix字段,同时删除冗余的旧版Ingress类注解,调整后的有效配置示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: landing
  namespace: landing
spec:
  ingressClassName: nginx
  rules:
  - host: landing.site
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: landing
            port:
              number: 80
  • 如果因为存量资源限制必须保留v1beta1版本的Ingress配置,需要在nginx-ingress控制器Deployment的启动参数列表里,追加-enable-v1beta1-ingress-support=true参数,显式开启对旧版Ingress的解析能力。
  • 调整完成后,重新查看控制器Pod内生成的nginx配置,对应upstream块的server地址会替换为landing服务对应的后端Endpoints地址(业务Pod的IP+80端口),不再出现默认的127.0.0.1:8181地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 18:36:01