2013-10-16 2 views
3

나는 몇 개의 웹 서버를 운영하고 있으며, 모두 하나의 도메인을 통해 액세스 할 수 있기를 원합니다. 나는 다른 서버에서 역방향 프록시로 IIS에서 ARR을 설정하고 정상적으로 작동합니다. 그러나 요청이 서버로 리디렉션 될 때 원본 IP 주소가 유지되어야합니다. 그렇지 않으면 서버는 localhost에서 시작된 모든 연결을 보지만 매우 좋지 않습니다.ARR이있는 IIS는 완전한 투명 역방향 프록시를 지원합니까?

나는 X-Forwarded-For 헤더를 만드는 옵션 forwarded_for가 있지만 WAF (웹 응용 프로그램 방화벽) 문제가 있으므로 실제로 투명하지는 않습니다.

답변

6

편집 :

당신은 프록시 서버에서 그들에게 지시 트래픽을 발생하는 귀하의 웹 사이트 각각에 대한 재 작성 규칙이 필요합니다. 이 규칙은 HTTP_X_FORWARDED_FOR 헤더가 있는지 여부를 확인하고 값이있는 경우 해당 요청이 프록시 서버에서 전달되었음을 알 수 있으므로 서버 변수 REMOTE_ADDRHTTP_X_FORWARDED_FOR 값으로 설정합니다. 는 사용자의 실제 IP 주소입니다.

<rule name="RewriteRemoteAddr"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTP_X_FORWARDED_FOR}" pattern="([_0-9a-zA-Z]+)" /> 
    </conditions> 
    <serverVariables> 
     <set name="{REMOTE_ADDR}" value="{HTTP_X_FORWARDED_FOR}" /> 
    </serverVariables> 
    <action type="None" /> 
</rule> 
+0

I 서버가 여러

여기 규칙입니다. 비표준 요청 헤더이기 때문에 변수 HTTP_X_FORWARDED_FOR을 설정하고 싶지 않습니다. – JohnnyLiao

+0

웹 사이트에서 사용자의 실제 IP 주소를 볼 수 있지만 HTTP_X_FORDWARDED_FOR을보고 싶지 않으므로 인바운드 다시 쓰기 규칙을 작성하여 REMOTE_ADDR 서버 변수를 덮어 쓸 수 있습니다. 잠시 후에 해결책을 찾아 보겠습니다. –

+0

중요한 부분 중 하나는 IIS의 허용 된 서버 변수 목록에 REMOTE_ADDR을 추가해야한다는 것입니다. 그렇지 않으면 다시 쓰기 규칙을 추가 할 때 서버 500 오류가 발생합니다. 변수를 추가하려면 IIS 관리자를 열고 웹 사이트로 이동 한 다음 URL 다시 작성을 두 번 클릭하고 오른쪽의 작업 영역에서 "서버 변수보기 ..."를 클릭 한 다음 "추가 ..."를 클릭하십시오. 설정하려는 각 변수를 추가해야합니다. – dadwithkids

관련 문제