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

如何创建反向代理转发流量至Kubernetes Ingress Controller(如HAProxy/Nginx)

问题描述
  • 需求:将服务器192.168.243.71的流量转发至oc get routes/kubectl get ingress命令返回的域名
  • 异常:部署在192.168.243.x的Nginx反向代理,实际将请求转发到负载均衡器IP,而非配置的真实域名
  • 当前访问结果:
    访问192.168.243.71时的结果
  • 期望:访问192.168.243.71时,得到与直接访问目标域名完全一致的响应
解决方案

1. 调整Nginx代理配置

问题根源是Nginx默认会提前将配置的域名解析为IP并固定转发,且未正确传递Host头,导致后端Ingress/Route无法匹配对应域名规则。修改nginx.conf中的代理块:

server {
    listen 80;
    server_name 192.168.243.71;

    location / {
        # 替换为oc get routes/kubectl get ingress返回的真实域名
        proxy_pass https://your-target-domain.com;
        
        # 传递目标域名作为Host头,让后端Ingress/Route识别规则
        proxy_set_header Host your-target-domain.com;
        # 传递客户端真实IP
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # 启用动态DNS解析,避免Nginx提前将域名解析为负载均衡器IP
        resolver 192.168.243.1; # 替换为你的内部DNS服务器,或用公共DNS如8.8.8.8
        proxy_ssl_server_name on; # 若目标是HTTPS,启用SNI支持
    }
}

2. 关键配置解释

  • proxy_set_header Host your-target-domain.com:强制后端服务收到的Host头为目标域名,确保Ingress/Route能匹配对应的路由规则
  • resolver:指定DNS服务器,让Nginx每次请求时动态解析目标域名,避免固定转发到某一个负载均衡器IP
  • proxy_ssl_server_name on:当目标域名是HTTPS时,启用SNI可以避免SSL握手失败,确保正确匹配后端SSL证书

3. 验证生效

修改配置后,重启Nginx使配置生效:

nginx -s reload

再次访问192.168.243.71,检查响应是否与直接访问目标域名一致。

内容的提问来源于stack exchange,提问作者Gilang Adhi Wibowo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:25:26