常用的7中承载用户信息的HTTP请求首部包含例如:From Uaer-Agent Referer Authorization Client-IP X-Forwarded-For和Cookie。HTTP代理在需要打开到原始服务器的连接时,服务器上能看到的是代理服务器ip或者负载均衡的地址。为了绕过负载均衡地址,获得客户端的原始ip,会使用X-Forwarded-For扩展首部来解决这个问题。
在4.0架构中的负载均衡监听器支持以下三种信息头:
1. X-Forwarded-For
简称XFF头,用于HTTP的个性化接触,用于服务器获取客户端真实的ip地址,在经过HTTP的代理或者使用了负载均衡之后会添加这个XFF头。标准格式中XFF头的信息可以有多个,使用逗号隔开,第一项是客户端的真实ip,后面则是经过的代理或者负载均衡地址。也会为了安全考虑只获取第一个客户端真实ip。
2. X-Forwarded-Proto
简称XFP头,用于服务器识别负载均衡监听器使用的协议是HTTP还是HTTPS。
3. X-Forwarded-Port
用于服务器识别负载均衡监听器使用的端口。
在创建负载均衡的监听器时可以在页面中选择“获取客户端IP”,即为服务器可以通过XFF头来获取客户端的ip。
图中为负载均衡开启X-Forwarded-For头、X-Forwarded-Proto头和X-Forwarded-Port头后,在服务器端抓包时能获取的信息,客户端真实ip为192.168.1.251,负载均衡监听器使用的协议是HTTPS,负载均衡监听器使用的端口号为9636.