HTTP 헤더 및 Application Load Balancer - Elastic Load Balancing

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

HTTP 헤더 및 Application Load Balancer

HTTP 요청 및 HTTP 응답은 헤더 필드를 사용하여 HTTP 메시지에 대한 정보를 전송합니다. HTTP 헤더가 자동으로 추가됩니다. 헤더 필드는 콜론으로 구분된 이름-값 페어이며 CR(캐리지 리턴) 및 LF(줄 바꿈)로 구분됩니다. HTTP 헤더 필드의 표준 집합은 RFC 2616 Message Headers에 정의되어 있습니다. 자동으로 추가되고 애플리케이션에서 널리 사용되는 비표준 HTTP 헤더도 제공되고 있습니다. 일부 비표준 HTTP 헤더는 X-Forwarded 접두사를 가지고 있습니다. Application Load Balancer는 다음 X-Forwarded 헤더를 지원합니다.

HTTP 연결에 대한 자세한 내용은 Elastic Load Balancing 사용 설명서라우팅 요청을 참조하세요.

X-Forwarded-For

X-Forwarded-For 요청 헤더는 HTTP 또는 HTTPS 로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. 로드 밸런서가 클라이언트와 서버 간의 트래픽을 가로채기 때문에 서버 액세스 로그에 로드 밸런서의 IP 주소만 포함됩니다. 클라이언트의 IP 주소를 확인하려면 routing.http.xff_header_processing.mode 속성을 사용하십시오. 이 속성을 사용하여, Application Load Balancer가 대상에 요청을 보내기 전에 HTTP 요청의 X-Forwarded-For 헤더를 수정, 보존 또는 제거할 수 있습니다. 이 속성에 사용 가능한 값은 append, preserveremove입니다. 이 속성의 기본값은 append입니다.

Append

기본적으로, Application Load Balancer는 X-Forwarded-For 요청 헤더에 클라이언트의 IP 주소를 저장하고 이 헤더를 서버로 전달합니다. X-Forwarded-For 요청 헤더가 원본 요청에 포함되지 않은 경우, 로드 밸런서는 클라이언트 IP 주소를 요청 값으로 사용하여 하나를 생성합니다. 그렇지 않으면, 로드 밸런서가 클라이언트 IP 주소를 기존 헤더에 추가한 다음 헤더를 서버로 전달합니다. X-Forwarded-For요청 헤더에는 쉼표로 구분된 여러 IP 주소가 포함될 수 있습니다. 가장 왼쪽 주소는 요청이 처음 만들어진 클라이언트 IP 주소입니다. 그 다음에는 체인에서 후속 프록시 식별자가 옵니다.

X-Forwarded-For 요청 헤더의 형식은 다음과 같습니다.

X-Forwarded-For: client-ip-address

다음은 IP 주소가 203.0.113.7인 클라이언트의 X-Forwarded-For 요청 헤더입니다.

X-Forwarded-For: 203.0.113.7

다음은 IPv6 주소가 X-Forwarded-For인 클라이언트의 2001:DB8::21f:5bff:febf:ce22:8a2e 요청 헤더입니다.

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

클라이언트 포트 보존 속성(routing.http.xff_client_port.enabled)이 로드 밸런서에서 활성화된 경우, X-Forwarded-For 요청 헤더에는 client-ip-address에 추가되는 client-port-number을(를) 포함합니다(콜론으로 구분). 이후 헤더의 형식은 다음과 같습니다.

IPv4 -- X-Forwarded-For: client-ip-address:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]:client-port-number

IPv6의 경우 로드 밸런서가 client-ip-address을(를) 기존 헤더에 추가하면 주소를 대괄호로 묶습니다.

다음은 IPv4 주소가 12.34.56.78이고 포트 번호가 8080인 클라이언트의 X-Forwarded-For 요청 헤더입니다.

X-Forwarded-For: 12.34.56.78:8080

다음은 IPv6 주소가 2001:db8:85a3:8d3:1319:8a2e:370:7348이고 포트 번호가 8080인 클라이언트의 X-Forwarded-For 요청 헤더입니다.

X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080

Preserve

속성의 preserve 모드는 대상으로 전송되기 전에 HTTP 요청의 X-Forwarded-For 헤더가 어떤 방식으로도 수정되지 않도록 합니다.

Remove

속성의 remove 모드는 대상으로 전송되기 전에 HTTP 요청의 X-Forwarded-For 헤더를 제거합니다.

참고

클라이언트 포트 보존 속성(routing.http.xff_client_port.enabled)을 활성화하고 routing.http.xff_header_processing.mode 속성에 preserve 또는 remove을(를) 선택할 경우 Application Load Balancer는 클라이언트 포트 보존 속성을 재정의합니다. 선택하는 모드에 따라 대상으로 전송되기 전에 X-Forwarded-For 헤더가 변경되지 않거나 제거됩니다.

다음 표에 append, preserve, 또는 remove 모드 중 하나를 선택할 때 대상이 받는 X-Forwarded-For 헤더의 예제가 나와 있습니다. 이 예제에서 마지막 홉의 IP 주소는 127.0.0.1입니다.

요청 설명

요청 예제

XFF(append 모드) XFF(preserve 모드) XFF(remove 모드)
요청이 XFF 헤더 없이 전송됩니다 GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 존재하지 않음 존재하지 않음
요청이 XFF 헤더 및 클라이언트 IP 주소를 포함하여 전송됩니다. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4 X-Forwarded-For: 127.0.0.4, 127.0.0.1 X-Forwarded-For: 127.0.0.4 존재하지 않음
요청이 XFF 헤더 및 여러 클라이언트 IP 주소를 포함하여 전송됩니다. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4, 127.0.0.8 X-Forwarded-For: 127.0.0.4, 127.0.0.8, 127.0.0.1 X-Forwarded-For: 127.0.0.4, 127.0.0.8 존재하지 않음
New EC2 experience
콘솔을 사용한 X-Forwarded-For 헤더 수정, 유지 또는 제거
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. 속성성(Attributes) 탭에서 편집(Edit)을 선택합니다.

  5. 트래픽 구성 섹션의 패킷 처리에서 용X-Forwarded-For 헤더에 대해 추가(기본값),보존, 또는제거를 선택합니다.

  6. 변경 사항 저장를 선택합니다.

Old EC2 experience
콘솔을 사용한 X-Forwarded-For 헤더 수정, 유지 또는 제거
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. 속성성(Attributes) 탭에서 편집(Edit)을 선택합니다.

  5. X-Forward-For 헤더에서 추가(기본값), 보존 또는 제거를 선택합니다.

  6. 변경 사항 저장를 선택합니다.

를 사용하여 X-Forwarded-For 헤더를 수정, 보존 또는 제거하려면 AWS CLI

modify-load-balancer-attributes명령을 routing.http.xff_header_processing.mode 속성과 함께 사용합니다.

X-Forwarded-Proto

X-Forwarded-Proto 요청 헤더는 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 줍니다. 서버 액세스 로그에는 서버와 로드 밸런서 간에 사용된 프로토콜만 포함되어 있으며, 클라이언트와 로드 밸런서 간에 사용된 프로토콜에 대한 정보는 포함되어 있지 않습니다. 클라이언트와 로드 밸런서 간에 사용된 프로토콜을 확인하려면 X-Forwarded-Proto 요청 헤더를 사용하십시오. Elastic Load Balancing은 X-Forwarded-Proto 요청 헤더에 클라이언트와 로드 밸런서 간에 사용된 프로토콜을 저장하고 서버로 헤더를 전달합니다.

애플리케이션이나 웹 사이트는 X-Forwarded-Proto 요청 헤더에 저장된 프로토콜을 사용하여 해당 URL로 응답이 리디렉션 되도록 합니다.

X-Forwarded-Proto 요청 헤더의 형식은 다음과 같습니다.

X-Forwarded-Proto: originatingProtocol

다음 예제에는 HTTPS 요청으로서 클라이언트에서 시작된 요청에 대한 X-Forwarded-Proto 요청 헤더가 포함되어 있습니다.

X-Forwarded-Proto: https

X-Forwarded-Port

X-Forwarded-Port 요청 헤더는 클라이언트가 로드 밸런서 연결에 사용한 대상 포트를 식별하는 데 도움을 줍니다.