現在、次のコードを使用して 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 に入れます。この httpheader は ASP.NET から読み取ることができます。
とにかく、ロード バランサーのドキュメントを読み、ロード バランサーがクライアント ブラウザーの IP を Web サーバーに送信する方法を確認する必要があります。
ロード バランサーからクライアント IP を取得する方法がわかったら、コードで値を確認できます。
元:
function getClientIP{
var IP = getClientIPfromLoadBalancer();
If (IP != null){return IP;}
else {return getClientIPfromRequest();}
}
IP = getClientIP();
あなたのロードバランサーがどのように機能するか分からないので、サンプルコードでこれ以上明確にすることはできません.