我有一个负载均衡的API,使用Microsoft自托管Web API并在托管的Rackspace负载均衡器后面运行HTTPS。负载均衡器不会终止HTTPS,而是将HTTPS直接转发到服务主机。即SSL证书位于处理请求的每个服务器上。
如果我绕过负载平衡,我可以使用request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name)正确提取客户端IP。
如果我通过负载均衡器,我没有得到客户端IP,我得到了负载均衡器的IP。
我一直在搜索并尝试各种方法来获取实际的客户端IP无济于事。我已经查看了请求的属性列表,同时调试认为必须在某处提供对原始客户端IP的引用。再无济于事。
似乎没有太多改变可以帮助将RackSpace Web管理器用于负载均衡器。
是否可以在此方案中提取原始客户端IP,或者在遍历负载均衡器后是否仍然不存在此信息?
非常感谢提前。
西蒙
答案 0 :(得分:4)
使用未由托管负载均衡器终止的HTTPS意味着它无法向加密流中添加任何内容。这意味着负载均衡器无法将原始IP传递给Web服务器本身。
答案 1 :(得分:2)
我和亚马逊有同样的问题。检查它发送的标头,它应该包含标题“X-Forwarded-For”,其中包含客户端的IP地址。