浏览 2k
原文作者:felix_yujing
原文链接:ingress nginx传递用户真实ip问题
转载来源:CSDN
注:在文档顶栏的搜索框搜索forward字样就可以找到这3个参数
X-Forwarded-*
的头信息传递给后端服务时,则需要将此参数设为trueX-Forwarded-*
的头信息。false设置适用于Nginx直接对外或前面只有3层负载均衡的场景由于ingress的主配置是从configmap中获取的,更新参数则需要修改名为nginx-configuration的configmap的配置:在data配置块下添加use-forwarded-headers: "true"
修改后,ingress nginx会自动加载更新nginx.conf主配置文件。下图为更新前后配置文件变化对比:
注:左边为开启use-forwarded-headers后ingress nginx主配置文件,右边为开启前
X-Forwarded-For
。如果想修改为自定义的字段名,则可以在configmap的data配置块下添加:forwarded-for-header: "THE_NAME_YOU_WANT"
。通常情况下,我们使用默认的字段名就满足需求,所以不用对这个字段进行额外配置。use-forwarded-headers: "true"
的话,会发现还是没能获取到客户端来源的真实ip,原因是当前X-Forwarded-For变量是从remote_addr获取的值,每次取到的都是最近一层代理的ip。为了解决这个问题,就要配置compute-full-forwarded-for字段了,即在configmap的data配置块添加:compute-full-forwarded-for: "true"
。其作用就是,将客户端用户访问所经过的代理ip按逗号连接的列表形式记录下来。注:左边是未开启compute-full-forwarded-for配置的ingress nginx主配置文件,右边是开启了的
想要更及时全面地获取NGINX相关的技术干货、互动问答、系列课程、活动资源?请前往NGINX开源社区:
- 官网:nginx.org.cn
- 微信公众号:https://mp.weixin.qq.com/s/XVE5yvDbmJtpV2alsIFwJg
- 微信群:https://www.nginx.org.cn/static/pc/images/homePage/QR-code.png?v=1621313354
按点赞数排序
按时间排序