리스너 규칙의 조건 유형 - Elastic Load Balancing

리스너 규칙의 조건 유형

조건은 수신 요청이 리스너 규칙을 적용하기 위해 충족해야 하는 기준을 정의합니다. 요청이 규칙의 조건과 일치하는 경우 해당 요청은 규칙의 작업에 따라 처리됩니다. 각 규칙 조건에는 유형과 구성 정보가 있습니다. Application Load Balancer는 리스너 규칙에 대해 다음과 같은 조건 유형을 지원합니다.

조건 유형
host-header

각 요청의 호스트 이름을 기반으로 라우팅합니다. 자세한 내용은 호스트 조건 단원을 참조하세요.

http-header

각 요청의 HTTP 헤더를 기반으로 라우팅합니다. 자세한 내용은 HTTP 헤더 조건 단원을 참조하세요.

http-request-method

각 요청의 HTTP 요청 메서드를 기반으로 라우팅합니다. 자세한 내용은 HTTP 요청 메서드 조건 단원을 참조하세요.

path-pattern

요청 URL의 경로 패턴을 기반으로 라우팅합니다. 자세한 내용은 경로 조건 단원을 참조하세요.

query-string

쿼리 문자열의 키/값 페어 또는 값을 기반으로 라우팅합니다. 자세한 내용은 쿼리 문자열 조건 단원을 참조하세요.

source-ip

각 요청의 소스 IP 주소를 기반으로 라우팅합니다. 자세한 내용은 소스 IP 주소 조건 섹션을 참조하세요.

조건 기본 사항
  • 각 규칙은 선택적으로 host-header, http-request-method, path-pattern, source-ip 조건을 각각 0개 또는 1개 포함할 수 있습니다. 또한 각 규칙은 http-headerquery-string 조건을 각각 0개 이상 포함할 수 있습니다.

  • host-header, http-header, path-pattern 조건을 사용하면 값 일치 또는 정규식(regex) 일치를 사용할 수 있습니다.

  • 조건당 최대 3개의 일치 평가를 지정할 수 있습니다. 예를 들어 각 http-header 조건에 대해 요청의 HTTP 헤더 값과 비교할 최대 3개의 문자열을 지정할 수 있습니다. 문자열 중 하나가 HTTP 헤더 값과 일치하면 조건이 충족됩니다. 모든 문자열이 일치하도록 요구하려면 일치 평가마다 조건 하나를 만듭니다.

  • 규칙당 최대 5개의 일치 평가를 지정할 수 있습니다. 예를 들어 조건 5개 각각에 일치 평가가 하나씩 있는 규칙을 만들 수 있습니다.

  • http-header, host-header, path-pattern, query-string 조건의 일치 평가에 와일드카드 문자를 포함시킬 수 있습니다. 규칙당 와일드카드 문자는 5개로 제한됩니다.

  • 규칙은 표시되는 ASCII 문자에만 적용되며 제어 문자(0x00에서 0x1f 및 0x7f)는 제외됩니다.

데모

데모는 고급 요청 라우팅을 참조하세요.

호스트 조건

호스트 조건을 사용하여 호스트 헤더의 호스트 이름을 기반으로 요청을 라우팅하는 규칙을 정의할 수 있습니다(호스트 기반 라우팅이라고도 함). 그러면 단일 로드 밸런서를 사용하여 여러 하위 도메인과 여러 최상위 도메인을 지원할 수 있습니다.

호스트 이름은 대/소문자를 구별하지 않고 최대 128자까지 가능하며 다음과 같은 문자를 포함할 수 있습니다.

  • A~Z, a~z, 0~9

  • - .

  • * (0개 이상의 문자에 해당)

  • ?(정확히 한 글자에 해당)

'.' 문자를 하나 이상 포함해야 합니다. 마지막 "." 문자 다음에는 알파벳만 포함할 수 있습니다.

호스트 이름 예제
  • example.com

  • test.example.com

  • *.example.com

규칙 *.example.com은 test.example.com과 일치하나 example.com과 일치하지 않습니다.

예 호스트 헤더 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요.

Value matching
[ { "Field": "host-header", "HostHeaderConfig": { "Values": ["*.example.com"] } } ]
Regex matching
[ { "Field": "host-header", "HostHeaderConfig": { "RegexValues": ["^(.*)\\.example\\.com$"] } } ]

HTTP 헤더 조건

HTTP 헤더 조건을 사용하여 요청의 HTTP 헤더를 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 표준 또는 사용자 지정 HTTP 헤더 필드의 이름을 지정할 수 있습니다. 헤더 이름과 일치 평가는 대/소문자를 구분하지 않습니다. 비교 문자열에서는 *(0개 이상의 문자 일치) 및 ?(정확히 1자 일치) 와일드카드 문자가 지원됩니다. 와일드카드 문자는 헤더 이름에서는 지원되지 않습니다.

Application Load Balancer 속성 routing.http.drop_invalid_header_fields가 활성화되면 정규식(A-Z,a-z,0-9)을 준수하지 않는 헤더 이름이 폐기됩니다. 정규식을 준수하지 않는 헤더 이름도 추가할 수 있습니다.

예 HTTP 헤더 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 조건은 지정된 문자열 중 하나와 일치하는 User-Agent 헤더가 있는 요청에 의해 충족됩니다.

Value matching
[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "Values": ["*Chrome*", "*Safari*"] } } ]
Regex matching
[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "RegexValues": [".+"] } } ]

HTTP 요청 메서드 조건

HTTP 요청 메서드 조건을 사용하여 요청의 HTTP 요청 메서드를 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 표준 또는 사용자 지정 HTTP 메서드를 지정할 수 있습니다. 일치 평가는 대/소문자를 구분합니다. 와일드카드 문자는 지원되지 않으므로 메서드 이름이 정확히 일치해야 합니다.

GET 및 HEAD 요청을 동일한 방식으로 라우팅하는 것이 좋습니다. HEAD 요청에 대한 응답이 캐싱될 수 있기 때문입니다.

예 HTTP 메서드 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 조건은 지정된 메서드를 사용하는 요청에 의해 충족됩니다.

[ { "Field": "http-request-method", "HttpRequestMethodConfig": { "Values": ["CUSTOM-METHOD"] } } ]

경로 조건

경로 조건을 사용하여 요청의 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에 대한 요청으로서 지정된 대상 그룹에 전달합니다.

예 경로 패턴 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 조건은 지정된 문자열이 포함된 URL이 있는 요청에 의해 충족됩니다.

Value matching
[ { "Field": "path-pattern", "PathPatternConfig": { "Values": ["/img/*"] } } ]
Regex matching
[ { "Field": "path-pattern", "PathPatternConfig": { "RegexValues": ["^\\/api\\/(.*)$"] } } ]

쿼리 문자열 조건

쿼리 문자열 조건을 사용하여 쿼리 문자열의 키/값 페어 또는 값을 기반으로 요청을 라우팅하는 규칙을 구성할 수 있습니다. 일치 평가는 대/소문자를 구분하지 않습니다. *(0개 이상의 문자 일치) 및 ?(정확히 1자 일치) 와일드카드 문자가 지원됩니다.

예 쿼리 문자열 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-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 조건의 예

규칙을 만들거나 수정할 때 조건을 지정할 수 있습니다. 자세한 내용은 create-rulemodify-rule 명령을 참조하세요. 다음 조건은 지정된 CIDR 블록 중 하나에 소스 IP 주소가 있는 요청에 의해 충족됩니다.

[ { "Field": "source-ip", "SourceIpConfig": { "Values": ["192.0.2.0/24", "198.51.100.10/32"] } } ]