我目前使用下面的代碼來檢測IP地址。ASP.NET負載均衡器IP檢測
<code>
IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
</code>
這適用於我們沒有負載均衡器的情況,但它在負載均衡器不存在的情況下不起作用。
我需要同時支持。請幫忙!
我目前使用下面的代碼來檢測IP地址。ASP.NET負載均衡器IP檢測
<code>
IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
</code>
這適用於我們沒有負載均衡器的情況,但它在負載均衡器不存在的情況下不起作用。
我需要同時支持。請幫忙!
原始請求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();
由於我不知道你的負載均衡器是如何工作的,我不能與示例代碼更加明確。
我使用下面提到的代碼在上面的代碼,是不存在的情況下: -
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"];
}
這段代碼在你的環境中工作嗎? – jlvaquero 2013-03-08 10:13:48
是的,它是..在你的情況下它不起作用嗎? – user776145 2013-03-09 04:48:28
我已經從類似的帖子在論壇上閱讀。但是我們能不能有一些通用的代碼,它可以在加載balencer存在或不存在時捕獲IP地址。 – user776145 2013-03-07 13:30:28
謝謝,讓我檢查一下負載平衡器是否通過IP地址。 – user776145 2013-03-08 04:07:44