使用机架空间托管负载均衡器后面的自托管Web API获取客户端IP

时间:2014-03-09 06:59:41

标签: c# ssl

我有一个负载均衡的API,使用Microsoft自托管Web API并在托管的Rackspace负载均衡器后面运行HTTPS。负载均衡器不会终止HTTPS,而是将HTTPS直接转发到服务主机。即SSL证书位于处理请求的每个服务器上。

如果我绕过负载平衡,我可以使用request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name)正确提取客户端IP。

如果我通过负载均衡器,我没有得到客户端IP,我得到了负载均衡器的IP。

我一直在搜索并尝试各种方法来获取实际的客户端IP无济于事。我已经查看了请求的属性列表,同时调试认为必须在某处提供对原始客户端IP的引用。再无济于事。

似乎没有太多改变可以帮助将RackSpace Web管理器用于负载均衡器。

是否可以在此方案中提取原始客户端IP,或者在遍历负载均衡器后是否仍然不存在此信息?

非常感谢提前。

西蒙

2 个答案:

答案 0 :(得分:4)

使用未由托管负载均衡器终止的HTTPS意味着它无法向加密流中添加任何内容。这意味着负载均衡器无法将原始IP传递给Web服务器本身。

答案 1 :(得分:2)

我和亚马逊有同样的问题。检查它发送的标头,它应该包含标题“X-Forwarded-For”,其中包含客户端的IP地址。

This might be helpful as well