ingress 在K8S集群外访问报404错误

文章讲述了在K8S环境中,当使用ingress进行外部访问时遇到404错误的问题。问题在于nginx负载均衡器未传递host字段给ingress。解决方案是在nginx配置中添加`proxy_set_headerHost$http_host;`和`proxy_set_headerX-Forward-For$remote_addr;`参数,确保host信息被正确转发,从而正确路由到集群内的服务。
摘要由CSDN通过智能技术生成

ingress 在K8S集群外访问报404错误


一、环境
1、ingress-nginx已经安装好,并且通过修改访问电脑的hosts配置是可以正常访问ingress的。
2、K8S集群外使用nginx 作为负载。
3、本文所使用环境配置皆为测试环境,是研究ingress入门使用。
二、具体配置
1、原理
ingress在配置时,使用了通过监听K8S集群内节点指定端口的域名访问,将匹配的域名转发到对应的service,然后实现正常的访问。下图中的的ingress对象配置host即为匹配的域名。
在这里插入图片描述
因此如果K8S集群外想要访问到集群内的应用,就需要把URL中的host字段传过来,但是在使用nginx配置时,如果没有特别设置,在进行负载或是反向代理时,会把源IP或是源请求中的host字段屏蔽掉,导致访问失败,匹配不到对应的host
2、解决办法
理解了原理,那么接下来就简单了,只要将源IP和host原封不动的转发到后端就行,因此在nginx配置中加上两个参数就行
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;
具体位置在server模块中
在这里插入图片描述
另外出于安全考虑,也可以不配置这个:proxy_set_header X-Forward-For $remote_addr; 不转发源IP,因为ingress只需要Host就行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值