【springboot过ingress后无法获取X-Forwarded-For头信息】

news2024/11/16 4:29:52

springboot过ingress后无法获取X-Forwarded-For头信息

  • 一、现象
  • 结论
  • 修改步骤
    • ingress
    • springboot
  • 排查流程
  • 本文参考

一、现象

项目使用spring boot 2.7.18,有个新需求是校验X-Forwarded-For头的所有来源ip合法性,线上环境出现取不到X-Forwarded-For头的问题,本地和测试环境都正常。本地是直接调用,测试环境是nginx转发,线上是k8s并且过了ingress。

结论

  1. ingress默认会忽略X-Forwarded-For,需要手动开启use-forwarded-headers: “true”。
  2. springboot中CloudPlatform对Kubernetes platform的类型进行了识别,如果使用的是内嵌的tomcat,在k8s环境中会自动添加了tomcat的RemoteIpValve,线上环境的httpHeader(x-forwarded-for)只有一个,没有代理ip信息,按RemoteIpValve的逻辑,x-forwarded-for头信息会被删除。
    需要二者配合修改。

修改步骤

ingress

kubectl edit configmaps nginx-configuration -n ingress-nginx

修改文件内容,添加参数:
apiVersion: v1
data:
  compute-full-forwarded-for: "true"
  forwarded-for-header: X-Forwarded-For
  use-forwarded-headers: "true"
....

在这里插入图片描述

springboot

添加springboot全局配置

server:
  forward-headers-strategy: none

排查流程

  1. postman调线上接口,线上取不到X-Forwarded-For头。但是在postman添加请求头X-Forwarded-For后,后端服务就能正确取到。
  2. 网上查资料说需要修改ingress配置。参考
  3. 修改ingress配置后,线上k8s容器抓包,流量显示有X-Forwarded-For头信息,且存在多个ip情况,用逗号隔开。
  4. 用python写一个程序用来取X-Forwarded-For头,打成Docker镜像上传部署到k8s,Python能正常取到X-Forwarded-For信息。问题已经定位到定位到springboot。问题分析参考

本文参考

  1. https://blog.csdn.net/weixin_46887489/article/details/134616471
  2. https://blog.csdn.net/m0_71777195/article/details/127978440

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【思博伦】史上最详细思博伦测试仪使用精讲!图解超赞超详细!!!

承接上文 目录 2.2.9.7 配置TCPFLAG 2.2.9.8 配置分片 2.2.9.9 添加VLAN标签 2.2.9.10 添加MPLS标签 2.2.9.11 添加Vntag标签 2.2.9.12 重新快速新建新的帧内容 ​​​​​​​2.2.10 导入Pcap包 2.2.11 发包配置 2.2.11.1 发包模式配置 ​​​​​​​2.2.11.2 配置…

【OJ】关于顺序表的经典题目(移除数组中指定元素的值、数组去重、合并两个有序的数组)

文章目录 前言题目1:移除数组中指定的元素题目描述解题思路方法1 :暴力法方法2:双指针法 题目2:数组去重题目描述解题思路双指针法 题目3:合并两个有序的数组题目描述解题思路方法1:暴力破解法方法2&#x…

SAP F110 批量付款付款参考(KIDNO)和分配字段(ZUONR)带入会计凭证

SAP F110 批量付款付款参考(KIDNO)和分配字段(ZUNOR)带入会计凭证 财务有个要求需要将付款建议的付款参考和分配字段写入最后的ZP凭证 最后的效果大概就是这样的 折腾了很久, 1、先是想到的GGB1的替代,但是试验了很久都没有搞定,貌似很多人遇到了这个情况。 2、然后…

初识爬虫4

1.理解代理ip,正向代理和反向代理 2.代理ip分类,根据匿名度分类:透明,匿名,高匿 3.防止频繁向同一个域名发送请求被封ip,需使用代理ip # -*- coding: utf-8 -*- import requestsurl https://www.baidu.comproxies {…

Facebook如何通过AI改变你的社交体验?

在当今数字化的社交媒体环境中,Facebook作为全球最大的社交平台之一,正在通过引入和优化人工智能(AI)技术,改变用户的社交体验。人工智能不仅帮助Facebook增强了内容推荐和信息过滤的精准度,还让平台具备了…

故障恢复(残次版)

视频地址 一:文件系统故障修复案例 模拟搞坏磁盘中的某一块 dd if/dev/zero of/dev/sdb1 bs1k count10(默认4K)1.修补分区中每个组中坏掉的超级块部分 查看超级块的备份块 dumpe2fs 磁盘位置 如: dumpe2fs /dev/sdb1使用备份超级块进行修复&#x…

Netty笔记01-Netty的基本概念与用法

文章目录 1. 概述1.1 Netty 是什么?1.2 Netty 的特点1.3 Netty 的作者1.4 Netty 的地位1.5 Netty 的优势1.6 Netty 的工作原理1.7 Netty 的应用场景1.8 Netty 的重要组件 2. 第一个程序2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理💡 提示 1. 概述 1.1 …

【香菇的程序人生】七夕舔狗反诈指南:技术篇

本文设计技术分析及部分参考网站仅供技术研究及自我保护,请勿用于其他用途! 另外,为什么本文只针对"舔狗"呢?因为舔狗不愿面对事实,本文将从科学技术角度给其指点迷津~ 文章目录 1. 你的女神/男神保熟吗1.1 AI 换脸请谨…

关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

STM32CubeMX环境配置 1 ADC1配置 选中ADC1,然后勾选IN0,其余设置均默认不变(此为单次扫描,若是连续扫描,只需要将上图中的Continuous Conversion Mode由Disabled变为Enabled即可)。 2 RCC及时钟配置 选中…

分析 ECharts 图表渲染导致的内存泄漏问题 - 附解决方案

一. 引言 在今年某个可视化大屏项目中,出现了一个问题。项目在运行一段时间后,页面出现了崩溃,而且是大概运行几天之后,因为大屏项目是部署到客户现场大屏,长时间运行不关闭。报错问题如下图所示: 由于这个…

重磅发布!DeepSeek-V2.5:融合通用与代码能力的全新开源模型

前沿科技速递🚀 在人工智能飞速发展的今天,通用对话与代码生成的融合已经成为开发者高效工作的关键工具。近日,DeepSeek 团队正式发布了全新的 DeepSeek-V2.5 模型,一个强大的开源模型,它将通用语言处理与代码生成能力…

Python爱心射线

系列目录 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…

高效录屏攻略:电脑视频录制时声音同步捕获技巧,轻松搞定高清音质

在当今数字化时代,无论是在线教育、远程工作还是内容创作,录制视频已经成为我们生活中不可或缺的一部分。但是,很多人在录制视频时都会遇到一个问题:如何同时录制声音?如果你也在为此烦恼,那么这篇文章将为…

OpenCV通过鼠标提前ROI(C++实现)

文章目录 鼠标绘制矩形提取ROI任意形状绘制提前ROI 废话不多说&#xff0c;直接上代码 鼠标绘制矩形提取ROI #include <iostream> #include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp>us…

算法_优先级队列---持续更新

文章目录 前言最后一块石头重量题目要求题目解析代码如下 数据流中的第K大元素题目要求题目解析代码如下 前K个高频单词题目要求题目解析代码如下 数据流的中位数题目要求题目解析代码如下 前言 本文将会向你分享优先级队列相关的题目&#xff1a;最后一块石头重量、数据流中的…

【运维自动化-作业平台】脚本版本管理如何使用

在蓝鲸作业平台中&#xff0c;执行脚本是最常见的功能之一&#xff0c;支持快速录入脚本执行和引用脚本执行&#xff0c;引用的脚步即单独写好的&#xff0c;并且由定期管理更新的脚本&#xff0c;主要有业务脚本和公共脚本两种。快速脚本 手动页面编写的脚本&#xff0c;没有…

将小写字母转换为大写字母(c 语言)

2.我们第一步输入字符串&#xff0c;第二步进行筛选将字符串中所以下标为奇数位置上的字母转换成大写&#xff0c;如果该位置不是字母&#xff0c;则不转换。 #include <stdio.h> #include <string.h> void fun( char *ss ) {int i 0;while (*ss ! \0){if (i % 2…

ACL 2024:交叉领域情感分析——论文阅读笔记

前言 阅读了一篇ABSA的论文&#xff0c;在这里写下自己的一些理解小笔记&#xff0c;可能有点小乱&#xff0c;原文在这下面&#xff1a; 论文链接&#xff1a;Refining and Synthesis: A Simple yet Effective Data Augmentation Framework for Cross-Domain Aspect-based Sen…

swoole协程 是单线程的,还是多线程的

Swoole 协程本质上是单线程的&#xff0c;但它可以在多个线程中运行。因此&#xff0c;Swoole 协程既可以看作是单线程的&#xff0c;也可以在多线程的环境下运行&#xff0c;这取决于你如何使用 Swoole。 理解 Swoole 协程的运行模式 1 单线程中的协程&#xff1a; 在一个单…

构建常态化安全防线:XDR的态势感知与自动化响应机制

当前&#xff0c;网络安全威胁日益复杂多变&#xff0c;企业正面临前所未有的严峻挑战。为有效应对这些挑战&#xff0c;态势感知与自动化响应机制在提升网络安全运营效率与防御效果中扮演着至关重要的角色。它们能够实时监测网络状态&#xff0c;智能分析潜在威胁&#xff0c;…