Microsoft/Azure

Application Gateway - X-Forwarded-For 헤더에서 Port 정보 제거

megapain 2021. 8. 7. 17:47

참고 자료

Remove port information from X-Forwarded-For header - https://docs.microsoft.com/en-us/azure/application-gateway/rewrite-http-headers-url#remove-port-information-from-the-x-forwarded-for-header


개요
Azure Application Gateway는 클라이언트 요청을 백엔드로 전달하기 전에 모든 요청에 X-Forwarded-For 헤더를 삽입합니다. 이 헤더는 쉼표로 구분된 IP:port 목록입니다. 
경우에 따라서는 백엔드 서버에 IP 주소만 필요한 시나리오가 있을 수 있습니다. 헤더 재작성(rewrite header)을 사용하여 X-Forwarded-For 헤더에서 Port 정보를 제거할 수 있습니다.

Azure Application Gateway의 Rewrite 기능을 사용하여 X-Forwarded-For 헤더에서 Port를 제거하는 방법을 설명합니다.


테스트 구성도
Application Gateway의 Backend에 Windows Server 2019 VM이 연결되어 있습니다.
Windows Server 2019에는 IIS 역할이 설치되어 있습니다.



사전 준비
Windows VM에 IIS 역할이 설치되어 있어야 합니다. (테스트에서는 기본값으로 설치했습니다.)
Application Gateway의 Frontend, Backend, Rule이 구성되어 있어야 합니다.

 

Step 1. Windows VM에서 X-Forwared-For 로깅 설정

Windows Server 2019에 IIS를 설치하는 경우, 기본적으로 IIS 로깅에서 X-Forwarded-For 는 기록되지 않습니다.
IIS 로깅 설정에서 X-Forwarded-For가 기록되도록 설정합니다.

대상 웹사이트 - 로깅 (Logging)


Select Fields



Field Name : X-Forwarded-For
Source Type : Request Header
Source : X-Forwarded-For
[OK]



[OK]



결과 확인
IIS 로그 파일 이름에 _x 라는 접미사가 붙은 파일이 새로 생성됩니다.



로그의 X-Forwarded-For 필드에 IP 주소와 Port 가 기록됩니다.




Step 2. Application Gateway - Rewrite HTTP Header

Application Gateway의 Rewrtie 메뉴에서 Rewrite set을 만듭니다.

Application Gateway - Rewrites - Rewrite set



Name : X-Fowarded-For
Routing rule 선택
[Next]




Add rewrite rule - Click to configure this action



Rewrite rule name과 Rule sequence 입력 (X-Forwarded-For, 100)
Common header : X-Forwarded-For 선택
Header value : {var_add_x_forwarded_for_proxy}
[OK]
[Create]




설정 완료




결과 확인
IIS 로그에서 IP 주소만 기록됨

 

-끝-