2013-01-23 2 views
0

Amazon ELB에서 내 사이트를 실행하고 있습니다. 사이트에서 수행하는 작업에 클라이언트의 IP 주소를 캡처해야합니다. 이상적인 것은 아니지만 지금은 IP가 필요합니다.IIS에서 aspx 페이지로 HTTP_X_FORWARDED_FOR을 전달하는 방법

전용 서버에서 잘 작동하는 데 사용됩니다. 그러나 ELB로 이동하기 때문에, 나는 단지 내가 추가 Request.UserHostAddress

Going from some blogs 사용할 때 클라이언트의 IP 주소로 ELB의 내부 IP 주소를 얻을 수 X-Forwarded-For 내 IIS 로그는 IP가 실제 웹 페이지에 전달되지 않도록 바로 클라이언트 IP를하더라도 ..

사실 Inform에는 헤더에 해당 필드가 없거나 헤더에있는 필드가 없습니다.

Request.Headers.ToString()을 검사하면 내 세션 쿠키, 다른 쿠키, 클라이언트 브라우저 (올바르게) 및 다른 것들이 있지만 어떤 IP도 제공하지 않습니다. 사실, 나는 엘프의 고정 IP를 볼 수조차 못합니다.

Request.Headers["HTTP_X_FORWARDED_FOR"]은 항상 null입니다.

C#에서 실제 클라이언트 IP를 얻으려면 어떻게합니까?

답변

1

며칠 전 비슷한 일을했습니다.

Request.ServerVariables을 사용하고 REMOTE_ADDR을 찾아 클라이언트 IP를 찾아야했습니다. 이 같은

뭔가 : 나를 위해 일한

if (Request.ServerVariables["REMOTE_ADDR"] != null) 
{ 
    string userIP = Request.ServerVariables["REMOTE_ADDR"]; 
} 

.. 내 테스트에서

+0

예, 감사합니다. – LocustHorde

1

는, 클라이언트 IP 주소는 다음과 같은 경우 모두에서 탄성로드 밸런서에 의해 채워졌다.

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

Request.Headers["X-Forwarded-For"]; 

이러한 변수의 형식은 클라이언트 IP 주소 일 필요는 없습니다. 요청이 여러 번 전달되면 서버 IP 주소에 쉼표와 공백이 구분 기호로 추가됩니다.

자세한 내용은 Amazon's Elastic Load Balancing Developer Guide을 참조하십시오 (X-Forwarded-For 검색).

관련 문제