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

Kubernetes ingress-nginx通配符_hostname配置前置导致服务404问题咨询

ingress-nginx默认server块导致服务404问题排查与修复

这个问题和主机上独立部署的nginx实例无关,完全是ingress-nginx自身的配置生成逻辑和nginx的路由匹配规则共同导致的,核心逻辑如下:

  • nginx的server块匹配优先级和配置顺序无关,会优先匹配和请求Host头完全一致的server_name,只有当所有明确配置的server_name都匹配失败时,才会命中标记了default_server的兜底server块。你提到的server_name _;是ingress-nginx约定的默认兜底server的占位符,本身没有特殊通配作用,这个默认server默认会被加上default_server标识。
  • 你当前遇到的访问全部返回404,本质是这个兜底的默认server没有配置default backend,所有未匹配到明确server_name的请求都会直接返回404。你删除默认server块后,nginx会自动把排序第一的server块作为兜底,所以之前未匹配的请求会落到这个server块处理。
  • 如果你的请求带了和3个ingress配置一致的Host头仍然返回404,说明这3个ingress的路径规则被写到了默认server块里,通常是因为你的ingress yaml没有明确填写host字段导致的。

修复方案

你可以根据自己的业务需求选择以下任意一种方案修复:

  • 给ingress-nginx配置全局default backend,未匹配的兜底请求会走这个backend返回对应内容,匹配到明确Host的请求会正常转发到对应服务,不需要修改现有ingress配置。
  • 调整ingress-nginx启动参数,禁用自动生成默认兜底server块,效果和你手动删除默认规则一致,不需要每次重载配置都手动修改。
  • 给所有3个ingress资源明确配置host字段,ingress-nginx会自动给每个host生成独立的server块,只要请求Host头匹配正确,就会直接命中对应server块,不会走到默认兜底规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:27:00