我们有两台负载均衡服务器。我们现在已经托管了一个asp.net 3.5应用程序,我们正在使用请求userhostaddress来获取访问者ip,但它正在提供负载均衡器ip而不是真正的ip。任何人都可以拥有此代码。
答案 0 :(得分:8)
我认为你不仅要搜索HTTP_X_FORWARDED_FOR,而且还要搜索所有这些,取决于你使用的负载平衡
Context.Request.ServerVariables[CheckAllBelowList]
"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",
返回其中一个,是你客户端的实际IP,除非是其他代理,我还需要了解一些人如何得到这个,找到2-3代理后面的用户...
如果您了解其他任何内容,请告诉我。
答案 1 :(得分:1)
问题更多地与“负载均衡器”充当代理的事实有关。您使用什么类型的负载均衡器?我知道在Microsoft ISA服务器上有一个设置可以将原始用户的IP地址传递到Web服务器。
否则,您必须编写一个页面来转储服务器变量,并查看是否添加了额外的服务器变量,以便为您提供真实的客户端IP地址。
答案 2 :(得分:1)
取决于负载平衡服务器,客户端的IP可以/应该写入:
Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
但要注意,如果用户也在代理后面,则值可能是代理原始客户端,而不是负载均衡器的客户端(在这种情况下,它将是代理IP)。我不确定什么行为是“正常的”。
希望有所帮助, 亚历