阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。

1、背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,可以看看,没怎么看懂,呵呵,要细细读下。

2、需要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个如下的AccessLogValve 日志纪录功能,当配置中的pattern=common时,对应的日志是如下,无论正常请求和非法请求都会记录。

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" pattern='commont' resolveHosts="false"/>

3、修改pattern为pattern=‘%{X-Forwarded-For}i %h %l %u %t "%r" %s %b‘,则会记录headers头中的X-Forwarded-For信息,可以使用fiddle抓取到X-Forwarded-For信息

4、获取tomcat中的X-Forwarded-For,前提阿里云需要开启获取真实IP如下图:

5、Java代码获取X-Forwarded-For

	/**
	 * 获取ip地址,防止集群、代理
	 * @param request
	 * @return ip
	 */
	public static String getAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}

阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。,布布扣,bubuko.com

时间: 2024-10-12 22:45:51

阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。的相关文章

阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,能够看看.没怎么看懂.呵呵,要细细读下. 2.须要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个例如以下的AccessLogValve 日志纪录功能.当配置中的pattern=common时.相应的日志是例如以下,不管正常请求和非法请求都会记录. <Valve className="org.a

阿里云ECS搭建Java+mysql+tomcat环境的简要步骤

使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系统是Centos 6.5. 在购买好阿里云ECS后. 1.下载XShell 2.下载XFtp 3.使用XShell链接到阿里云ECS 4.以下命令在XShell中使用,也就是通过XShell控制阿里云服务器里的操作系统 [1]常用命令 pwd       查看当前目录 df -h      查看当前

阿里云 Debian Linux 布署记录

摘要: 主要安装了web环境,java+tomcat+mysql+nginx(暂没没用) 数据盘挂载在/data下,项目,索引都放/data目录下 java,tomcat,mysql程序都在/root/www建立的有快捷方式   1.软件包的安装 apt-get install 下载的软件都放/var/cache/apt/archives目录下,可用apt-get autoclean或apt-get clean删除已下载的包 2.安装mysql 5.6.deb dpkg –i  mysql-5.

阿里云ECS服务器Docker安装Tomcat过程记录

第一步 在阿里云官网上,进入产品与服务的网络和安全菜单,添加安全组规则,开放端口. 第二步 在阿里云服务器中,开放防火墙的端口,使外网可以访问. 第三步 检查是否有iptables规则,如果有就清空这些规则. 1.查看是否有规则 iptables -L 2.保存现有规则 iptables-save > iprules.txt 3.清空规则 iptables -F 第四步 运行tomcat,最新版tomcat镜像中包含有两个webapps文件夹.一个文件夹名为webapps,但是这个文件夹是空的,

centos(Linux)系统阿里云ECS搭建 jdk,tomcat和MySQL环境,并部署web程序

之前我对这个东西一无所知,攻击力为0,谢谢各个论坛上面的兄弟们的帮助. 过程: 首先ssh远程登陆: ssh [email protected]你的公网ip ,输入密码 1,jdk我用的版本是jdk-7u80-linux-x64.rpm(注意,一定是linux-x64的,不要下载i586的,i586是32位系统) 安装命令: rpm -ivh jdk安装文件路径 2,下载tomcat安装包,去Apache官网下载,core下面选择tar.gz(下载的时候可能文件损坏,重新下载) 解压命令:tar

阿里云 CenterOS 安装mysql java tomcat gcc nginx步骤

由于公司需要,申请了一台阿里云服务器,购买的过程很简单.买完后系统就安装好了,可以直接使用.在使用的过程中遇到了些问题,再次记录一下. 我用的操作系统是centos 5.4 32位的. 1.磁盘挂载 初始化按照后只有一个系统盘,没有数据盘.所以第一步要挂在数据盘. 可以用  fdisk -l|grep Disk  查看你的系统有几块盘. 如: Disk /dev/hda: 21.4 GB, 21474836480 bytes Disk /dev/xvdb: 85.8 GB, 8589934592

大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录

一.背景介绍 最近几天,接到公司的一个将当前大数据平台数据全部迁移到阿里云ODPS平台上的任务.而申请的这个ODPS平台是属于政务内网的,因考虑到安全问题当前的大数据平台与阿里云ODPS的网络是不通的,所以不能使用数据采集工作流模板. 然而,考虑到原大数据平台数据量并不是很大,可以通过将原大数据平台数据导出到CSV文件,然后再将CSV文件导入到ODPS平台.在这个过程中踩的坑有点多,所以想写篇文档作为记录. 二.大数据平台Hive数据导出到本地 编写export_data.sh脚本如下: #!/

阿里云RDS上的一些概念性记录

刚接触RDS,只能对RDS上的一些特性做一些笔记,方便记忆,以下为RDS上的内容摘录,取自官方文档 1 数据备份 可使用命令行或图形界面进行逻辑数据备份.仅限通过 RDS 管理控制台 或 OPEN API 进行物理备份. 2 数据还原 可使用命令行或图形界面进行逻辑数据还原.仅限通过 RDS 管理控制台 或 OPEN API 进行物理还原. 3 数据迁入 可以使用命令行或图形界面进行逻辑导入.可以使用 mysqldump.数据传输进行数据迁入. 4 存储引擎 支持MyISAM,InnoDB,To

云计算之路-阿里云上:2014年6月12日16:14遭遇SLB故障

这是今天遇到的第3次故障,故障是首先被园友发现的,访问园子出现来自SLB的错误提示:400 Bad Request - Powered by Tengine. 查看Windows性能监视器发现,在故障期间SLB中的2台云服务器的http.sys的ArriveRate明显下降: IIS日志情况如下: 已向阿里云提交工单. [更新] 17:59问题再次出现.