기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Application Load Balancer를 위한 리스너
리스너는 구성한 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스입니다. Application Load Balancer를 사용하기 전에 리스너를 최소 하나 이상 추가해야 합니다. 로드 밸런서에 리스너가 없는 경우 클라이언트로부터 트래픽을 수신할 수 없습니다. 리스너에 대해 정의하는 규칙은 로드 밸런서가 EC2 인스턴스와 같이 등록한 대상으로 요청을 라우팅하는 방법을 결정합니다.
내용
리스너 구성
리스너는 다음과 같은 프로토콜 및 포트를 지원합니다.
-
프로토콜: HTTP, HTTPS
-
포트: 1-65535
HTTPS 리스너를 사용하여 암호화 및 복호화 작업을 로드 밸런서로 오프로드하여 애플리케이션이 비즈니스 로직에 집중할 수 있도록 할 수 있습니다. 리스너 프로토콜이 HTTPS인 경우 리스너에 하나 이상의 SSL 서버 인증서를 배포해야 합니다. 자세한 내용은 Application Load Balancer용 HTTPS 리스너 생성 단원을 참조하십시오.
대상이 로드 밸런서 대신 HTTPS 트래픽을 복호화해야 하는 경우 포트 443에서 TCP 리스너를 사용하여 Network Load Balancer를 생성할 수 있습니다. TCP 리스너를 사용하면 로드 밸런서는 암호화된 트래픽을 복호화하지 않고 대상에 전달합니다. Network Load Balancer에 대한 자세한 정보는 Network Load Balancer 사용 설명서를 참조하세요.
Application Load Balancer는 WebSockets에 대한 기본 지원을 제공합니다. HTTP 연결 업그레이드를 사용하여 기존 HTTP/1.1 연결을 a WebSocket (ws
또는 wss
) 연결로 업그레이드할 수 있습니다. 업그레이드하면 요청에 사용되는 TCP 연결(로드 밸런서 및 대상에 대한 연결)이 로드 밸런서를 통해 클라이언트와 대상 간의 영구 WebSocket 연결이 됩니다. HTTP 리스너와 Word 리스너 모두에서 HTTPS WebSockets 를 사용할 수 있습니다. 리스너에 대해 선택하는 옵션은 WebSocket 연결 및 HTTP 트래픽에 적용됩니다. 자세한 내용은 Amazon WebSocket 개발자 안내서의Word 프로토콜 작동 방식을 참조하세요. CloudFront
Application Load Balancer는 HTTP 리스너가 있는 HTTPS/2에 대한 기본 지원을 제공합니다. 하나의 HTTP/2 연결을 사용하여 최대 128개의 요청을 병렬로 전송할 수 있습니다. 프로토콜 버전을 사용하여 HTTP/2를 사용하여 대상에 요청을 보낼 수 있습니다. 자세한 내용은 프로토콜 버전 단원을 참조하십시오. HTTP/2는 프런트엔드 연결을 더 효율적으로 사용하기 때문에 클라이언트와 로드 밸런서 간의 연결이 더 적을 수 있습니다. HTTP/2의 서버 푸시 기능은 사용할 수 없습니다.
자세한 내용은 Elastic Load Balancing 사용 설명서의 라우팅 요청을 참조하세요.
리스너 속성
다음은 Application Load Balancer의 리스너 속성입니다.
routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name
-
X-Amzn-Mtls-Clientcert-Serial-Number HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_mtls_clientcert_issuer.header_name
-
X-Amzn-Mtls-Clientcert-Issuer HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_mtls_clientcert_subject.header_name
-
X-Amzn-Mtls-Clientcert-Subject HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_mtls_clientcert_validity.header_name
-
X-Amzn-Mtls-Clientcert-Validity HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_mtls_clientcert_leaf.header_name
-
X-Amzn-Mtls-Clientcert-Leaf HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_mtls_clientcert.header_name
-
X-Amzn-Mtls-Clientcert HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_tls_version.header_name
-
X-Amzn-Tls-Version HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.request.x_amzn_tls_cipher_suite.header_name
-
X-Amzn-Tls-Cipher-Suite HTTP 요청 헤더의 헤더 이름을 수정할 수 있습니다.
routing.http.response.server.enabled
-
HTTP 응답 서버 헤더를 허용하거나 제거할 수 있습니다.
routing.http.response.strict_transport_security.header_value
-
사이트는 HTTPS를 통해서만 액세스해야 하며, 향후 HTTP를 사용하여 액세스하려는 모든 시도는 자동으로 HTTPS로 변환되어야 함을 브라우저에 알립니다.
routing.http.response.access_control_allow_origin.header_value
-
서버에 액세스할 수 있는 오리진을 지정합니다.
routing.http.response.access_control_allow_methods.header_value
-
다른 오리진에서 서버에 액세스할 때 허용되는 HTTP 메서드를 반환합니다.
routing.http.response.access_control_allow_headers.header_value
-
요청 중에 사용할 수 있는 헤더를 지정합니다.
routing.http.response.access_control_allow_credentials.header_value
-
요청 시 브라우저에 쿠키 또는 인증과 같은 보안 인증 정보를 포함해야 하는지 여부를 나타냅니다.
routing.http.response.access_control_expose_headers.header_value
-
브라우저가 요청 클라이언트에 노출할 수 있는 헤더를 반환합니다.
routing.http.response.access_control_max_age.header_value
-
전송 전 요청의 결과를 캐시할 수 있는 시간을 초 단위로 지정합니다.
routing.http.response.content_security_policy.header_value
-
특정 유형의 보안 위협의 위험을 최소화하는 데 도움이 되도록 브라우저에서 적용되는 제한을 지정합니다.
routing.http.response.x_content_type_options.header_value
-
콘텐츠 유형 헤더에 광고된 MIME 유형을 따라야 하는지 여부와 변경해서는 안 되는지 여부를 나타냅니다.
routing.http.response.x_frame_options.header_value
-
브라우저가 프레임, iframe, 임베드 또는 객체에서 페이지를 렌더링할 수 있는지 여부를 나타냅니다.
리스너 규칙
모든 리스너에는 기본 동작이 있으며, 이를 기본 규칙이라고도 합니다. 기본 규칙은 삭제할 수 없으며 항상 마지막에 수행됩니다. 추가 규칙을 생성할 수 있으며 추가 규칙은 우선 순위, 하나 이상의 작업, 하나 이상의 조건으로 구성됩니다. 언제든 규칙을 추가하거나 편집할 수 있습니다. 자세한 내용은 규칙 편집 단원을 참조하세요.
기본 규칙
리스너를 생성할 때 기본 규칙에 대한 작업을 정의합니다. 기본 규칙은 조건을 가질 수 없습니다. 리스너의 규칙에 대한 조건이 충족되지 않으면 기본 규칙에 대해 작업이 수행됩니다.
다음은 콘솔에 나타난 기본 규칙을 보여줍니다.
규칙 우선 순위
각 규칙마다 우선 순위가 있습니다. 규칙은 가장 낮은 값에서 가장 높은 값에 이르기까지 우선 순위에 따라 평가됩니다. 기본 규칙은 마지막에 평가됩니다. 기본이 아닌 규칙의 우선 순위는 언제든지 변경이 가능합니다. 기본 규칙의 우선 순위는 변경할 수 없습니다. 자세한 내용은 규칙 우선 순위 업데이트 단원을 참조하세요.
규칙 작업
각 규칙 작업에는 작업을 수행하는 데 필요한 유형, 우선 순위 및 정보가 있습니다. 자세한 내용은 규칙 작업 유형 단원을 참조하십시오.
규칙 조건
각 규칙 조건에는 유형과 구성 정보가 있습니다. 규칙에 대한 조건이 충족되면 작업이 수행됩니다. 자세한 내용은 규칙 조건 형식 단원을 참조하세요.
규칙 작업 유형
리스너 규칙에 대해 지원되는 작업 유형은 다음과 같습니다.
authenticate-cognito
-
[HTTPS 리스너] Amazon Cognito를 사용하여 사용자를 인증합니다. 자세한 내용은 Application Load Balancer를 사용하여 사용자 인증 단원을 참조하십시오.
authenticate-oidc
-
[HTTPS 리스너] OpenID Connect(OIDC)를 준수하는 자격 증명 공급자를 사용하여 사용자를 인증합니다.
fixed-response
-
사용자 지정 HTTP 응답을 반환합니다. 자세한 내용은 고정 응답 작업 단원을 참조하십시오.
forward
-
요청을 지정된 대상 그룹으로 전달합니다. 자세한 내용은 전달 작업 단원을 참조하십시오.
redirect
-
한 Word에서 다른 URL로 요청을 리디렉션합니다. 자세한 내용은 리디렉션 작업 단원을 참조하십시오.
가장 낮은 우선 순위가 있는 작업이 첫 번째로 수행됩니다. 각 규칙에는 forward
, redirect
또는 fixed-response
작업 중 하나가 꼭 포함되어 있어야 하며, 이 작업이 수행할 마지막 작업이어야 합니다.
프로토콜 버전이 gRPC 또는 HTTP/2인 경우 지원되는 유일한 작업은 forward
작업입니다.
고정 응답 작업
fixed-response
작업을 사용하여 클라이언트 요청을 삭제하고 사용자 지정 HTTP 응답을 반환할 수 있습니다. 이 작업을 사용하여 2XX, 4XX, 5XX 응답 코드와 선택적 메시지를 반환할 수 있습니다.
fixed-response
작업이 수행되면 리디렉션 대상의 작업과 URL가 액세스 로그에 기록됩니다. 자세한 내용은 액세스 로그 항목 단원을 참조하십시오. 성공한 fixed-response
작업의 개수는 HTTP_Fixed_Response_Count
지표에 보고됩니다. 자세한 내용은 Application Load Balancer 지표 단원을 참조하십시오.
예 에 대한 고정 응답 작업의 예 AWS CLI
규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 작업은 지정된 상태 코드와 메시지 본문이 있는 고정 응답을 보냅니다.
[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]
전달 작업
forward
작업을 사용하여 하나 이상의 대상 그룹에 요청을 라우팅할 수 있습니다. forward
작업에 대해 여러 대상 그룹을 지정하는 경우 각 대상 그룹에 대해 가중치를 지정해야 합니다. 각 대상 그룹 가중치는 0과 999 사이의 값입니다. 가중 대상 그룹이 있는 리스너 규칙과 일치하는 요청은 가중치를 기준으로 이러한 대상 그룹에 배포됩니다. 예를 들어, 각각 가중치가 10인 두 개의 대상 그룹을 지정하면 각 대상 그룹은 요청을 절반씩 받습니다. 가중치가 10인 대상 그룹과 가중치가 20인 대상 그룹 두 개를 지정하면 가중치가 20인 대상 그룹이 다른 대상 그룹보다 두 배 많은 요청을 받습니다.
기본적으로 가중 대상 그룹 간에 트래픽을 배포하도록 규칙을 구성한다고 해서 고정 세션이 반드시 적용되는 것은 아닙니다. 고정 세션이 적용되도록 하려면 규칙에 대해 대상 그룹 고정을 활성화합니다. 로드 밸런서가 먼저 요청을 가중치 대상 그룹에 라우팅하면 선택한 대상 그룹에 대한 정보를 인코딩하고 쿠키를 암호화하며 클라이언트에 대한 응답에 쿠키를 포함하는 AWSALBTG 라는 쿠키가 생성됩니다. 클라이언트는 로드 밸런서에 대한 후속 요청에서 수신하는 쿠키를 포함해야 합니다. 로드 밸런서가 대상 그룹 고정 기능이 활성화된 규칙과 일치하고 쿠키를 포함하는 요청을 받으면 요청이 쿠키에 지정된 대상 그룹으로 라우팅됩니다.
Application Load Balancer는 URL로 인코딩된 쿠키 값을 지원하지 않습니다.
CORS(원본 간 리소스 공유) 요청의 경우 일부 브라우저는 고정성을 활성화SameSite=None; Secure
해야 합니다. 이 경우 Elastic Load Balancing은 원래 고정 쿠키와 동일한 정보와이 SameSite
속성이 포함된 두 번째 쿠키인 AWSALBTGCORS를 생성합니다. 클라이언트는 두 쿠키를 모두 수신합니다.
예 하나의 대상 그룹이 있는 전달 작업의 예
규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 작업은 요청을 지정된 대상 그룹으로 전달합니다.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/my-targets
/73e2d6bc24d8a067
" } ] } } ]
예 두 개의 가중 대상 그룹이 있는 전달 작업의 예
다음 작업은 각 대상 그룹의 가중치를 기준으로 지정된 두 대상 그룹에 요청을 전달합니다.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ] } } ]
예 고정성이 활성화된 전달 작업의 예
대상 그룹이 여러 개인 전달 작업이 있고 하나 이상의 대상 그룹에 고정 세션이 활성화되어 있으면 대상 그룹 고정을 활성화해야 합니다.
다음 작업은 대상 그룹 고정 기능을 사용하여 요청을 지정된 두 대상 그룹으로 전달합니다. 고정 쿠키가 포함되지 않은 요청은 각 대상 그룹의 가중치에 따라 라우팅됩니다.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]
리디렉션 작업
redirect
작업을 사용하여 한 Word에서 다른 URL로 클라이언트 요청을 리디렉션할 수 있습니다. 필요에 따라 리디렉션을 임시(HTTP 302) 또는 영구(HTTP 301)으로 구성할 수 있습니다.
URI는 다음 구성 요소로 구성됩니다.
protocol
://hostname
:port
/path
?query
리디렉션 루프를 피하기 위해 프로토콜, 호스트 이름 포트, 경로 중 최소 하나를 수정해야 합니다. 수정하지 않은 구성 요소는 원래 값을 유지합니다.
- 프로토콜
-
프로토콜(HTTP 또는 HTTPS). HTTP를 HTTP로, HTTP를 HTTPS로, HTTPS를 HTTPS로 리디렉션할 수 있습니다. HTTPS를 HTTP로 리디렉션할 수 없습니다.
- hostname
-
호스트 이름입니다. 호스트 이름은 대/소문자를 구분하지 않고 최대 128자까지 가능하며 영숫자, 와일드카드(* 및 ?), 하이픈(-)으로 구성됩니다.
- port
-
포트입니다(1~65535).
- 경로
-
"/"로 시작하는 절대 경로입니다. 경로는 대/소문자를 구분하고, 길이가 최대 128자일 수 있으며, 영숫자, 와일드카드(* 및 ?), &(& 사용), 특수 문자 _-.$/~"'@:+로 구성됩니다.
- query
-
쿼리 파라미터입니다 최대 길이는 128자입니다.
다음 예약 키워드를 사용하여 대상 URI에서 원래 URL의 URL 구성 요소를 재사용할 수 있습니다.
-
#{protocol}
- 프로토콜을 포함합니다. protocol 및 query 구성 요소에 사용합니다. -
#{host}
- 도메인을 포함합니다. hostname, path, query 구성 요소에 사용합니다. -
#{port}
- 포트를 포함합니다. port, path, query 구성 요소에 사용합니다. -
#{path}
- 경로를 포함합니다. path 및 query 구성 요소에 사용합니다. -
#{query}
- 쿼리 파라미터를 포함합니다. query 구성 요소에 사용합니다.
redirect
작업이 수행되면 액세스 로그에 작업이 기록됩니다. 자세한 내용은 액세스 로그 항목 단원을 참조하세요. 성공한 redirect
작업의 개수는 HTTP_Redirect_Count
지표에 보고됩니다. 자세한 내용은 Application Load Balancer 지표 단원을 참조하세요.
예 콘솔을 사용한 리디렉션 작업 예
다음 규칙은 URL 프로토콜과 지정된 포트(40443)를 사용하지만 원래 호스트 이름, 경로 및 쿼리 파라미터를 유지하는 HTTPS로 영구 리디렉션을 설정합니다. 이 화면은 "https://#{host}:40443/#{path}?#{query}"와 동일합니다.
다음 규칙은 원본 프로토콜, 포트, 호스트 이름 및 쿼리 파라미터를 유지하는 URL로 영구 리디렉션을 설정하고 #{path}
키워드를 사용하여 수정된 경로를 생성합니다. 이 화면은 "#{protocol}://#{host}:#{port}/new/#{path}?#{query}"와 동일합니다.
예 에 대한 리디렉션 작업 예제 AWS CLI
규칙을 만들거나 수정할 때 작업을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 작업은 HTTP 요청을 Word 요청과 동일한 호스트 이름, 경로 및 쿼리 문자열을 사용하여 HTTPS 포트 443의 HTTP 요청으로 리디렉션합니다.
[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]
규칙 조건 형식
규칙에 대해 지원되는 조건 형식은 다음과 같습니다.
host-header
-
각 요청의 호스트 이름을 기반으로 라우팅합니다. 자세한 내용은 호스트 조건 단원을 참조하십시오.
http-header
-
각 요청에 대한 HTTP 헤더를 기반으로 라우팅합니다. 자세한 내용은 HTTP 헤더 조건 단원을 참조하십시오.
http-request-method
-
각 요청의 HTTP 요청 방법을 기반으로 라우팅합니다. 자세한 내용은 HTTP 요청 메서드 조건 단원을 참조하십시오.
path-pattern
-
요청 URLs의 경로 패턴을 기반으로 라우팅합니다. 자세한 내용은 경로 조건 단원을 참조하십시오.
query-string
-
쿼리 문자열의 키/값 페어 또는 값을 기반으로 라우팅합니다. 자세한 내용은 쿼리 문자열 조건 단원을 참조하세요.
source-ip
-
각 요청의 소스 IP 주소를 기반으로 라우팅합니다. 자세한 내용은 소스 IP 주소 조건 단원을 참조하세요.
각 규칙에는 선택적으로 host-header
, http-request-method
, path-pattern
및 source-ip
조건 중 하나 이상을 포함할 수 있습니다. 또한 각 규칙에는 선택적으로 http-header
및 query-string
조건 중 하나 이상을 포함할 수 있습니다.
조건당 최대 3개의 일치 평가를 지정할 수 있습니다. 예를 들어 각 http-header
조건에 대해 요청의 HTTP 헤더 값과 비교할 문자열을 최대 3개까지 지정할 수 있습니다. 문자열 중 하나가 HTTP 헤더의 값과 일치하면 조건이 충족됩니다. 모든 문자열이 일치하도록 요구하려면 일치 평가마다 조건 하나를 만듭니다.
규칙당 최대 5개의 일치 평가를 지정할 수 있습니다. 예를 들어 조건 5개 각각에 일치 평가가 하나씩 있는 규칙을 만들 수 있습니다.
http-header
, host-header
, path-pattern
, query-string
조건의 일치 평가에 와일드카드 문자를 포함시킬 수 있습니다. 규칙당 와일드카드 문자는 5개로 제한됩니다.
규칙은 표시되는 ASCII 문자에만 적용되며 제어 문자(0x00~0x1f 및 0x7f)는 제외됩니다.
데모는 고급 요청 라우팅
HTTP 헤더 조건
HTTP 헤더 조건을 사용하여 요청에 대한 HTTP 헤더를 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 표준 또는 사용자 지정 HTTP 헤더 필드의 이름을 지정할 수 있습니다. 헤더 이름과 일치 평가는 대/소문자를 구분하지 않습니다. 비교 문자열에서는 *(0개 이상의 문자 일치) 및 ?(정확히 1자 일치) 와일드카드 문자가 지원됩니다. 와일드카드 문자는 헤더 이름에서는 지원되지 않습니다.
예 에 대한 예제 HTTP 헤더 조건 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 지정된 문자열 중 하나와 일치하는 User-Agent 헤더가 있는 요청에 의해 충족됩니다.
[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "Values": ["*Chrome*", "*Safari*"] } } ]
HTTP 요청 메서드 조건
HTTP 요청 메서드 조건을 사용하여 요청의 HTTP 요청 메서드를 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 표준 또는 사용자 지정 HTTP 메서드를 지정할 수 있습니다. 일치 평가는 대/소문자를 구분합니다. 와일드카드 문자는 지원되지 않으므로 메서드 이름이 정확히 일치해야 합니다.
GET HEAD 요청에 대한 응답이 캐시될 수 있으므로 Word 및 HEAD 요청을 동일한 방식으로 라우팅하는 것이 좋습니다.
예 에 대한 예제 HTTP 메서드 조건 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 지정된 메서드를 사용하는 요청에 의해 충족됩니다.
[ { "Field": "http-request-method", "HttpRequestMethodConfig": { "Values": ["CUSTOM-METHOD"] } } ]
호스트 조건
호스트 조건을 사용하여 호스트 헤더의 호스트 이름을 기반으로 요청을 라우팅하는 규칙을 정의할 수 있습니다(호스트 기반 라우팅이라고도 함). 그러면 단일 로드 밸런서를 사용하여 여러 하위 도메인과 여러 최상위 도메인을 지원할 수 있습니다.
호스트 이름은 대/소문자를 구별하지 않고 최대 128자까지 가능하며 다음과 같은 문자를 포함할 수 있습니다.
-
A~Z, a~z, 0~9
-
- .
-
* (0개 이상의 문자에 해당)
-
?(정확히 한 글자에 해당)
'.' 문자를 하나 이상 포함해야 합니다. 마지막 "." 문자 다음에는 알파벳만 포함할 수 있습니다.
호스트 이름 예제
-
example.com
-
test.example.com
-
*.example.com
규칙 *.example.com
은 test.example.com
과 일치하나 example.com
과 일치하지 않습니다.
예 에 대한 호스트 헤더 조건 예 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 지정된 문자열과 일치하는 호스트 헤더가 있는 요청에 의해 충족됩니다.
[ { "Field": "host-header", "HostHeaderConfig": { "Values": ["*.example.com"] } } ]
경로 조건
경로 조건을 사용하여 요청의 URL(경로 기반 라우팅이라고도 함)를 기반으로 요청을 라우팅하는 규칙을 정의할 수 있습니다.
경로 패턴은 쿼리 파라미터가 아닌 URL의 경로에만 적용됩니다. 이는 표시되는 ASCII 문자에만 적용되며 제어 문자(0x00~0x1f 및 0x7f)는 제외됩니다.
규칙 평가는 URI 정규화가 발생한 후에만 수행됩니다.
경로 패턴은 대/소문자를 구별하고 최대 128자이며 다음과 같은 문자를 포함할 수 있습니다.
-
A~Z, a~z, 0~9
-
_ - . $ / ~ " ' @ : +
-
&(& 사용)
-
* (0개 이상의 문자에 해당)
-
?(정확히 한 글자에 해당)
프로토콜 버전이 gRPC인 경우 조건은 패키지, 서비스 또는 메서드에 따라 다를 수 있습니다.
예제 HTTP 경로 패턴
-
/img/*
-
/img/*/pics
gRPC 경로 패턴의 예
-
/package
-
/package.service
-
/package.service/method
경로 패턴은 요청을 라우팅하는 데 사용되지만 요청을 변경하지 않습니다. 예를 들어 /img/*
(이)라는 경로 패턴을 가진 규칙은 /img/picture.jpg
에 대한 요청을 /img/picture.jpg
에 대한 요청으로서 지정된 대상 그룹에 전달합니다.
예 에 대한 경로 패턴 조건 예 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 지정된 문자열이 포함된 URL가 포함된 요청에 의해 충족됩니다.
[ { "Field": "path-pattern", "PathPatternConfig": { "Values": ["/img/*"] } } ]
쿼리 문자열 조건
쿼리 문자열 조건을 사용하여 쿼리 문자열의 키/값 페어 또는 값을 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 일치 평가는 대/소문자를 구분하지 않습니다. *(0개 이상의 문자 일치) 및 ?(정확히 1자 일치) 와일드카드 문자가 지원됩니다.
예 에 대한 쿼리 문자열 조건 예 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 키/값 페어 "version=v1" 또는 “example”로 설정된 키가 포함된 쿼리 문자열이 있는 요청에 의해 충족됩니다.
[ { "Field": "query-string", "QueryStringConfig": { "Values": [ { "Key": "version", "Value": "v1" }, { "Value": "*example*" } ] } } ]
소스 IP 주소 조건
소스 IP 주소 조건을 사용하여 요청의 소스 IP 주소를 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. IP 주소는 CIDR 형식으로 지정해야 합니다. IPv4 주소와 IPv6 주소를 모두 사용할 수 있습니다. 와일드카드 문자는 지원되지 않습니다. 소스 IP 규칙 조건에 대한 255.255.255.255/32
CIDR는 지정할 수 없습니다.
클라이언트가 프록시 뒤에 있는 경우, 이는 클라이언트의 IP 주소가 아니라 프록시의 IP 주소입니다.
이 조건은 X-Forwarded-For 헤더의 주소에서 충족되지 않습니다. X-Forwarded-For 헤더에서 주소를 검색하려면 http-header
조건을 사용합니다.
예 에 대한 소스 IP 조건의 예 AWS CLI
규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음 조건은 지정된 CIDR 블록 중 하나에 소스 IP 주소가 있는 요청에 의해 충족됩니다.
[ { "Field": "source-ip", "SourceIpConfig": { "Values": ["192.0.2.0/24", "198.51.100.10/32"] } } ]
HTTP 헤더 및 Application Load Balancer
HTTP 요청 및 HTTP 응답은 헤더 필드를 사용하여 HTTP 메시지에 대한 정보를 전송합니다. HTTP 헤더가 자동으로 추가됩니다. 헤더 필드는 콜론으로 구분된 이름-값 쌍이며 CR(캐리지 리턴) 및 LF(줄 바꿈)로 구분됩니다. HTTP 헤더 필드 세트는 RFC 2616, 메시지 헤더에 정의되어 있습니다X-Forwarded
접두사가 있습니다. Application Load Balancer는 다음 X-Forwarded
헤더를 지원합니다.
HTTP 연결에 대한 자세한 내용은 Elastic Load Balancing 사용 설명서의 라우팅 요청을 참조하세요.
X-Forwarded 헤더
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
, preserve
및 remove
입니다. 이 속성의 기본값은 append
입니다.
중요
보안 위험이 발생할 수 있으므로 X-Forwarded-For
헤더는 신중하게 사용해야 합니다. 항목은 네트워크 내에서 적절하게 보호되는 시스템이 추가하는 경우에만 신뢰할 수 있는 것으로 간주될 수 있습니다.
Append
기본적으로, Application Load Balancer는 X-Forwarded-For
요청 헤더에 클라이언트의 IP 주소를 저장하고 이 헤더를 서버로 전달합니다. X-Forwarded-For
요청 헤더가 원본 요청에 포함되지 않은 경우, 로드 밸런서는 클라이언트 IP 주소를 요청 값으로 사용하여 하나를 생성합니다. 그러지 않으면, 로드 밸런서가 클라이언트 IP 주소를 기존 헤더에 추가하고 헤더를 서버로 전달합니다. X-Forwarded-For
요청 헤더에는 쉼표로 구분된 여러 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
이고 포트 번호가 인 클라이언트에 대한 X-Forwarded-For
요청 헤더의 예입니다8080
.
X-Forwarded-For: 12.34.56.78:8080
다음은 IPv6 주소가 2001:db8:85a3:8d3:1319:8a2e:370:7348
이고 포트 번호가 인 클라이언트에 대한 X-Forwarded-For
요청 헤더의 예입니다8080
.
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
입니다.
요청 설명 |
요청 예제 |
append 모드의 XFF |
preserve 모드의 XFF |
remove 모드의 XFF |
---|---|---|---|---|
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 |
존재하지 않음 |
요청은 여러 클라이언트 IP 주소가 있는 XFF 헤더와 함께 전송됩니다. | 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 |
존재하지 않음 |
를 수정, 보존 또는 제거하려면 X-Forwarded-For 콘솔을 사용한 헤더
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 로드 밸런서를 선택합니다.
-
로드 밸런서를 선택합니다.
-
속성성(Attributes) 탭에서 편집(Edit)을 선택합니다.
-
트래픽 구성 섹션의 패킷 처리에서 X-Forwarded-For 헤더에 추가(기본값), 보존 또는 제거를 선택합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
를 수정, 보존 또는 제거하려면 X-Forwarded-For 를 사용한 헤더 AWS CLI
routing.http.xff_header_processing.mode
속성과 함께 modify-load-balancer-attributes 명령을 사용합니다.
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
다음 예제에는 클라이언트에서 Word X-Forwarded-Proto
요청으로 시작된 요청에 대한 요청 헤더가 포함되어 HTTPS.
X-Forwarded-Proto: https
X-Forwarded-Port
X-Forwarded-Port
요청 헤더는 클라이언트가 로드 밸런서 연결에 사용한 대상 포트를 식별하는 데 도움을 줍니다.