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

跨Kubernetes集群Ingress上游负载均衡配置故障排查

问题分析与解决方法

核心原因:Host头不匹配

直接代理单个域名时,Nginx默认会将Host请求头设置为目标域名(如validator.amd.com),这正好匹配后端K8s Ingress的Host规则,因此请求能正常路由到后端应用。

但使用upstream配置时,Nginx默认会将Host头设置为上游组的名称(即valid),而后端Ingress仅接受Host为validator.amd.com或validator.bm.com的请求,导致请求被Ingress拒绝,表现为上游配置失效。

解决方法

方法1:为上游服务器指定Host参数

在upstream的每个server条目里添加host参数,明确指定转发时使用的Host头:

upstream valid{
    server validator.amd.com:80 host=validator.amd.com;
    server validator.bm.com:80 host=validator.bm.com;
}

然后在对应的location中确保Host头使用$proxy_host(默认值,可显式声明):

location /api/valid {
    proxy_set_header Content-Type application/json;
    proxy_set_header Host $proxy_host;
    proxy_pass http://valid/api/validators;
}

其他排查方向

  1. 检查DNS解析:在独立服务器上执行ping validator.amd.com和ping validator.bm.com,确认服务器能正常解析这两个域名的IP。如果解析失败,需要配置正确的DNS服务器。
  2. 查看Nginx错误日志:查看/var/log/nginx/error.log(路径可能因系统不同而异),里面会记录请求失败的具体原因,比如连接超时、403/404错误等,帮助快速定位问题。
  3. 验证路径转发规则:确认请求路径转发是否符合预期。比如当请求/api/valid/abc时,Nginx会转发为http://valid/api/validators/abc,这和直接代理时的路径一致,所以路径问题大概率不是原因,但可以通过日志或抓包验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:10:09