我目前正在使用以下代码来检测 IP 地址。
<code>
IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
</code>
这在我们没有负载均衡器时有效,但在负载均衡器存在的情况下不起作用。
我需要两个都支持。请帮忙!
我目前正在使用以下代码来检测 IP 地址。
<code>
IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
</code>
这在我们没有负载均衡器时有效,但在负载均衡器存在的情况下不起作用。
我需要两个都支持。请帮忙!
我在上面的代码中使用下面提到的代码,在上下文中不存在:-
IP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
//Not Behind the Load balancer or proxy server
if (IP == null)
{
IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
原始请求 IP 被负载均衡器 IP 覆盖,因为负载均衡器是接收请求的机器。您的 Web 服务器接收来自平衡器的请求,而不是来自客户端浏览器的请求。
一些负载均衡器将原始请求 IP 放在 HTTPHeaders 中。您可以从 ASP.NET 读取此 httpheader。
无论如何,您必须阅读负载均衡器文档并检查负载均衡器如何将客户端浏览器 IP 发送到 Web 服务器。
一旦您知道如何从负载均衡器获取客户端 IP,您就可以检查代码中的值。
前任:
function getClientIP{
var IP = getClientIPfromLoadBalancer();
If (IP != null){return IP;}
else {return getClientIPfromRequest();}
}
IP = getClientIP();
由于我不知道您的负载均衡器是如何工作的,因此我无法更明确地使用示例代码。