리스너 규칙에 대한 변환
규칙 변환은 요청이 대상으로 라우팅되기 전에 인바운드 요청을 재작성합니다. 요청을 재작성해도 규칙 조건을 평가하여 이루어진 라우팅 결정은 변경되지 않습니다. 이는 클라이언트가 대상에서 예상하는 것과 다른 URL 또는 호스트 헤더를 전송할 때 유용합니다.
규칙 변환을 사용하면 경로, 쿼리 문자열, 호스트 헤더를 수정하는 책임이 로드 밸런서로 오프로드됩니다. 따라서 애플리케이션 코드에 별도의 사용자 지정 수정 로직을 추가하거나 타사 프록시를 사용하여 수정할 필요가 없습니다.
Application Load Balancer는 리스너 규칙에 대해 다음 변환을 지원합니다.
변형
host-header-rewrite-
요청의 호스트 헤더를 재작성합니다. 변환은 정규식을 사용하여 호스트 헤더의 패턴과 일치시킨 다음 대체 문자열로 대체합니다.
url-rewrite-
요청 URL을 재작성합니다. 변환은 정규식을 사용하여 요청 URL의 패턴과 일치시킨 다음 대체 문자열로 대체합니다.
변환 기본 사항
-
각 규칙에는 호스트 헤더 재작성 변환과 URL 재작성 변환을 각각 하나씩 추가할 수 있습니다.
-
기본 규칙에 변환을 추가할 수 없습니다.
-
패턴이 일치되지 않으면 원래 요청이 대상으로 전송됩니다.
-
패턴이 일치하지만 변환이 실패한 경우 HTTP 500 오류가 반환됩니다.
호스트 헤더 재작성 변환
호스트 헤더에 지정된 도메인 이름을 수정할 수 있습니다.
예 호스트 헤더 변환 예
규칙을 만들거나 수정할 때 변환을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음은 호스트 헤더 변환의 예입니다. 호스트 헤더를 내부 엔드포인트로 변환합니다.
[ { "Type": "host-header-rewrite", "HostHeaderRewriteConfig": { "Rewrites": [ { "Regex": "^mywebsite-(.+).com$", "Replace": "internal.dev.$1.myweb.com" } ] } } ]
예를 들어 이 변환은 호스트 헤더 https://mywebsite-example.com/project-a를 https://internal.dev.example.myweb.com/project-a로 재작성합니다.
URL 재작성 변환
URL의 경로 또는 쿼리 문자열을 수정할 수 있습니다. 로드 밸런서 수준에서 URL을 재작성하면 백엔드 서비스가 변경되더라도 프론트엔드 URL이 사용자 및 검색 엔진에 일관되도록 유지될 수 있습니다. 복잡한 URL 쿼리 문자열을 단순화하여 고객이 쉽게 입력할 수 있도록 할 수도 있습니다.
URL의 프로토콜 또는 포트는 수정할 수 없으며 경로와 쿼리 문자열만 수정할 수 있습니다.
예 URL 재작성 변환의 예
규칙을 만들거나 수정할 때 변환을 지정할 수 있습니다. 자세한 내용은 create-rule 및 modify-rule 명령을 참조하세요. 다음은 URL 재작성 변환의 예입니다. 디렉터리 구조를 쿼리 문자열로 변환합니다.
[ { "Type": "url-rewrite", "UrlRewriteConfig": { "Rewrites": [ { "Regex": "^/dp/([A-Za-z0-9]+)/?$", "Replace": "/product.php?id=$1" } ] } } ]
예를 들어 이 변환은 요청 URL https://www.example.com/dp/B09G3HRMW를 https://www.example.com/product.php?id=B09G3HRMW로 재작성합니다.
URL 재작성과 URL 리디렉션의 차이점
| 기능 | URL 리디렉션 | URL 재작성 |
|---|---|---|
| URL 표시 | 브라우저 주소 표시줄의 변경 사항 | 브라우저 주소 표시줄의 변경 사항 없음 |
| 상태 코드 | 301(영구) 또는 302(임시) 사용 | 상태 코드 변경 없음 |
| 처리 중 | 브라우저 측 | 서버 측 |
| 일반적인 용도 | 도메인 변경, 웹 사이트 통합, 손상된 링크 수정 | SEO를 위한 클린 URL, 복잡한 구조 숨기기, 레거시 URL 매핑 제공 |